新標準增加後綴u(U),用來表示整數常量是一個無符號數。浮點常量用後綴F(或f)表示它是float類型;L(或l)表示它是long double類型;若沒有後綴則是double類型。
注意浮點常量沒有後綴則是double類型。
【例3.4】請分析下面程序中存在的問題。
#include<stdio.h> void main ( ) { float f=1234.567 ; printf ( "%f , %10f\n" ,f ,f ); }
浮點常量沒有後綴則是double類型,第1條語句的數字「1234.567」本身為double型,所以對定義「float f=1234.567;」,需要將它轉換為float型。若無轉換,編譯時會給出警告。
warning C4305 : 'initializing' : truncation from 'const double ' to 'float '
雖然有警告,但仍然可以輸出正確結果:「1234.567017,1234.567017」。
如果使用「1234.567F」表示常量,既可以排除警告,也可以保證得到正確的輸出結果。
如將定義改為「double f=1234.567」,則可得到正確輸出為「1234.567000,1234.567000」。
一定要注意使用正確的格式。例如,下面的定義
double f=1/4 ;
中的f是等於0.250000還是0.000000?因為編譯器要先計算「1/4」,這是兩個整數相除,所以結果為0。如果寫作「1./4」,得到0.250000。在程序中千萬要注意這個問題。