Kami tahu bahawa pengendali ternary dilaksanakan dan bukannya klausa if..else. Ia diwakili oleh ?:. '? Simbol ' bersamaan dengan bahagian if, dan ':' bersamaan dengan bahagian lain. 3 program berikut menerangkan beberapa pemerhatian menarik dalam kes pengendali ternary.
Program berikut disusun tanpa sebarang ralat. Jenis pulangan ungkapan ternary dijangka terapung (seperti exp2), dan exp3 (iaitu sifar literal - jenis int) secara tersirat boleh ditukar kepada terapung.
#include <iostream> using namespace std; int main(){ int test1 = 0; float fvalue = 3.111f; cout<< (test1 ? fvalue : 0) << endl; return 0; }
Atur cara berikut tidak akan disusun kerana pengkompil tidak dapat mencari atau mencari jenis pemulangan ungkapan ternary, atau tiada penukaran tersirat antara exp2 (tatasusunan char) dan exp3 (int).
#include <iostream> using namespace std; int main(){ int test1 = 0; cout<< test1 ? "A String" : 0 << endl; return 0; }
Program berikut mungkin boleh dikompilasi, tetapi akan gagal apabila dijalankan. Jenis pemulangan ungkapan ternary dihadkan untuk menaip (char *), tetapi ungkapan mengembalikan int, jadi program gagal. Secara literal, program ini cuba mencetak rentetan pada alamat 0 pada masa pelaksanaan atau masa jalan.
#include <iostream> using namespace std; int main(){ int test1 = 0; cout << (test1 ? "A String" : 0) << endl; return 0; }
Atas ialah kandungan terperinci Beberapa pemerhatian menarik tentang pengendali ternary C/C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!