Pertanyaan C + + parameter kode pelolosan


Saya melihat beberapa kode dari salah satu pelanggan kami dan menemukan parameter fungsi ini yang belum pernah saya lihat sebelumnya:

some_function('ESFc');

Di debugger saya mengatur nilainya

char c = 'ESFc';

dan itu sama dengan 99

Dia juga menggunakan 'ESSc', 'ESCm' dan 'ESBd' yang dapat divalidasi menjadi 99, 109 dan 100

Apa ini? Apakah ini semacam kode pelarian?


4
2017-10-13 21:13


asal


Jawaban:


Ini adalah literal multi-karakter, tetapi nilainya tidak 99. Jenis 'ESFc' sebenarnya adalah int, dan saat Anda menyimpannya dalam char kehilangan presisi. Lihat pertanyaan ini:

Apa yang dilakukan tanda kutip tunggal di C + + saat digunakan pada banyak karakter?


7
2017-10-13 21:15