2017-02-16 38 views
-1

我問自己沒有一次。我不明白它做了什麼?如何在printf裏面工作?

例如:

1.代碼

char a = 'h'; 
printf("%i", (int)a); /// Conversion 'a' to int, and again conversion to int by modifier %i. Right? 

如果我會寫的那麼 - 你會說:這是錯的!

2.代碼

printf("%i", a); 

爲什麼,這是錯的???我們通過修飾符%i將'a'轉換爲int類型,然後輸出。

1和2代碼有什麼區別?

P.S爲什麼我不能通過'cout'模擬輸出簡單的C++?

+1

'我問自己......什麼? –

+0

@SouravGhosh標題=) – MaximPro

+0

'%i'不是「轉換」。它是一個輸出格式說明符,它告訴'printf()'如何取一個特定類型的值(在這種情況下爲'int')並將其轉換爲形成該值的文本表示的字符(在本例中爲十進制數) 。 – unwind

回答

2

printf("%i", a); 

A碼是正確的,因爲printf()是一個可變參數函數和它的參數,默認參數推廣應用規則和a將晉升爲int,反正。

printf("%i", (int)a); 

A碼也是正確的,但流延是完全不必要的。

+0

好吧,如果我將int替換爲float? 'printf(「%f」,(float)a);'和'printf(「%f」,a);'區別? – MaximPro

+1

@MaximPro你究竟想知道什麼?似乎現在是一個XY問題... –

+0

如果printf爲我做的一切都轉換變量爲所需的類型是否有意義? – MaximPro