Beberapa pemerhatian menarik tentang pengendali ternary C/C++

PHPz
Lepaskan: 2023-09-15 19:29:02
ke hadapan
1156 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk
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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!