2012-09-20 55 views
1

爲什麼printf("%c ", 2293552);打印0混淆%c和ASCII碼

ASCII值是從0到127 我知道這一定是一些週期性的事情,但我想要一個清晰的解釋。謝謝

回答

3

編號2293552對應於0x22ff30。當printf將其解釋爲ASCII時,它將忽略包含0x30(即'0'的代碼)的最後8位之後的所有位。

從C99標準:

7.19.1.6.8 - %c:如果沒有l長度修飾符,int參數轉換爲unsigned char,並將得到的字符被寫入。

+0

哈!你擊敗了我的答案,但我擊敗你的標準報價:D(僅限10k) –

+0

謝謝,再次感謝您的額外支持信息。 –

+0

@DanielFischer哦,是的,我明白了,你沒有! – dasblinkenlight

0

可能%c僅使用您的參數的低位字節,即2293552 & 255 = 48 = '0'

+0

謝謝!這是可以理解的。 –