Rumah >pembangunan bahagian belakang >C++ >Apakah Perwakilan Perangkap dalam C dan C , dan Adakah Terapung Bersaiz Sama dan Penunjuknya Berkongsi Perwakilan Perduaan Yang Sama?
Perwakilan Perangkap
Soalan:
Jawapan:
1. Perwakilan Perangkap:
Dalam C, perwakilan perangkap ialah corak sedikit yang sesuai dengan saiz jenis tetapi menyebabkan gelagat tidak ditentukan jika digunakan sebagai nilai jenis tersebut. Tiada jenis diperlukan untuk mempunyai perwakilan perangkap, tetapi satu-satunya jenis yang dijamin tidak mempunyainya ialah aksara tidak ditandatangani.
Contoh perwakilan perangkap ialah NaN isyarat dalam jenis titik terapung. Corak ini tidak ditentukan dalam C99.
2. Kebolehgunaan kepada C :
Walaupun soalan tidak menyebut C , perlu diingat bahawa konsep perwakilan perangkap juga terpakai kepada C.
3. Perwakilan Perduaan Apungan dan Penunjuk:
Kod yang disediakan di bawah menunjukkan tingkah laku yang tidak ditentukan:
float f = 3.5; int *pi = (int*)&f;
Walau bagaimanapun, tingkah laku ini tidak berkaitan dengan perwakilan perangkap. Untuk mendapatkan nilai integer dengan corak bit yang sama seperti float, gunakan kod berikut:
int extract_int(float f) { union { int i; float f; } u; u.f = f; return u.i; }
Kod ini mempamerkan tingkah laku yang tidak ditentukan dalam C99, bermakna piawaian tidak mentakrifkan nilai integer tepat yang dihasilkan, tetapi ia menjamin bahawa nilai integer yang sah diperolehi. Oleh itu, perwakilan binari apungan dan integer yang diperoleh menggunakan kesatuan tidak dijamin sama.
Atas ialah kandungan terperinci Apakah Perwakilan Perangkap dalam C dan C , dan Adakah Terapung Bersaiz Sama dan Penunjuknya Berkongsi Perwakilan Perduaan Yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!