簡體   English   中英

C output 問題。誰能解釋一下這個 output 嗎?

[英]C output question.Can anyone explain this output?

#include<stdio.h>
void main()
{
    printf("%d",'AA');
}

我期待那里出現錯誤,但程序運行並且 output 是 16705。有人可以解釋一下嗎?

誰能解釋一下?

'AA'是一個多字符字符常量。 它的類型為int 它的值是實現定義的。

這里的“實現”是編譯器,您的編譯器具有將int'AA'映射到的規則。 映射似乎很容易。 因為我不知道你的編譯器,我猜它。 請查閱您的編譯器文檔以確定。

'AA'映射到值'A' << 8 | 'A' 'A' << 8 | 'A' 用另一個'A''A'位移一個字節。 您的系統很可能使用 ASCII 來表示字符。 ASCII 中的'A'映射到十進制值65 (十六進制中的0x41 )。 計算0x41 << 8 | 0x41 0x41 << 8 | 0x41給出十進制值16705 因為這是一個int值,所以您可以使用%d打印結果。 所以你的代碼相當於printf("%d\n", 16705)

'AA'是一種奇異的野獸。 這是一個字符文字,但 ASCII 沒有單個字符'AA' 這解釋了為什么你會得到一個非 ASCII 值。

此代碼運行是因為 char 數據類型是數字,並且您已請求打印 'AA' 的實數

https://en.wikipedia.org/wiki/C_data_types

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM