Rumah >pembangunan bahagian belakang >C++ >Beberapa pemerhatian menarik tentang pengendali ternary C/C++

Beberapa pemerhatian menarik tentang pengendali ternary C/C++

PHPz
PHPzke hadapan
2023-09-15 19:29:021232semak imbas

Beberapa pemerhatian menarik tentang pengendali ternary C/C++

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;
}
Kita boleh perhatikan bahawa exp2 dianggap sebagai jenis output dan exp3 akan dapat ditukar kepada exp2 pada masa pelaksanaan atau masa jalan. Jika penukaran dianggap tersirat, pengkompil akan Masukkan rintisan ditukar. Pengkompil akan membuang ralat jika penukaran dianggap sebagai operasi eksplisit. Jika mana-mana pengkompil dapat mengabaikan ralat sedemikian, program mungkin gagal pada masa pelaksanaan atau masa jalan.

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam