我期待他們兩人給予同樣的結果(浮動的sizeof)的sizeof(3.0)和sizeof(3.0F)之間的區別..但這不一樣。
在32位機,gcc編譯, 的sizeof(3.0F)=> 4 的sizeof(3.0)=> 8
爲什麼?
我期待他們兩人給予同樣的結果(浮動的sizeof)的sizeof(3.0)和sizeof(3.0F)之間的區別..但這不一樣。
在32位機,gcc編譯, 的sizeof(3.0F)=> 4 的sizeof(3.0)=> 8
爲什麼?
因爲3.0是雙倍的。請參閱C syntax Floating point types。
浮點常量可能是用十進制表示法寫的 ,例如, 1.23。通過加上e或E,然後加上十進制的指數,例如可以使用科學記數法。 1.23e2(其中 值123)。小數點或 指數是必需的(否則, 該數字是一個整數常量)。 C99引入了十六進制的 浮點常量,其遵循 類似的規則,除了它們必須是 前綴爲0x並且使用p來指定 十六進制指數。二進制和 十六進制浮點常量 可能後綴f或F來指示 浮點類型的常量,由l或L指定爲 指示類型爲long double,或者爲左邊的 爲雙常數不指定。
3.0是一個double
,而不是一個float
。
doubles
的寬度是float
s的兩倍。
EDIT:3.0D只在C#
沒有'd'浮點後綴('l'和'L'給出長雙倍,'f'和'F'給出浮點和缺少後綴給出雙倍) – AProgrammer 2009-08-31 07:37:57
固定;謝謝。 – SLaks 2009-08-31 11:24:58
在IEEE754中'double'是'float'的兩倍寬;但是C不需要IEEE754。 – 2017-05-04 15:38:25
和3.0F是浮點。 – stonemetal 2009-08-31 00:59:53
十進制和十六進制浮點常量都可以後綴f或F來指示float類型的常量,由l或L表示類型爲long double,或者左對於雙常量不帶任何後綴。 =>它的速度太快,無法在這裏得到答案:) – kumar 2009-08-31 01:06:49