2017-05-26 137 views
0

困惑,爲什麼當我編譯時,當hold是一個整數時,它會起作用?將字符存儲在一個整數變量中

char value = 'p'; 
int hold = value; 
printf("%c", hold); 
+0

做一些關於ASCII的研究:) – Gam

+0

'printf'的'%c'需要'int'。見[printf](http://en.cppreference.com/w/c/io/fprintf) – BLUEPIXY

+1

因爲''p''是一個整數,所以你應該問爲什麼'char value ='p''起作用! –

回答

3

首先,在

int hold = value; 

執行隱式轉換從charint

其次,在

printf("%c", hold); 

%c符意味着什麼作爲其轉換爲char並打印爲符號。

+0

'%c'說明符告訴'printf()'使_expect_參數的類型爲'char';沒有進行轉換(外部或默認參數促銷),以及不匹配的轉換說明符和參數導致未定義的行爲。值得注意的是'char'是一個整數類型。 –

+2

@DavidBowling'%c'期望類型爲'int'的參數。 – BLUEPIXY

+0

@ BLUEPIXY--哎呀,你是對的;有一段時間我沒有看過標準的這部分內容,但是現在我看到了'int'實際上被轉換爲'unsigned char'。 –

相關問題