以下 2 行代碼有什么區別?
#define F_SAMP 10000.0f
#define F_SAMP 10000.0
兩個都不是浮動的嗎?(順便說一句,在這種特殊情況下,編譯器是 XC16,但我認為這并不重要)感謝您的關注
uj5u.com熱心網友回復:
帶forF后綴的浮點常量有 type float,沒有后綴的有 type double,帶lorL后綴的有 type long double。
首先,這會有所不同,因為值可以不同,如果值不是整數,通常會不同。例如,使用的格式最常用于float和double,的值123456789.是123456789,但的值123456789.f是123456792。
此外,如果將該值分配給 a float,則結果可能與f最初使用的常量不同。例如,之后:
float f0 = 9007198986305535.5f;
float f1 = 9007198986305535.5;
的值為f09,007,198,717,870,080,但 的值為f19,007,199,254,740,992。這是因為前幾輪 9,007,198,986,305,535.5 直接到float,而后幾輪先到double再到float。
uj5u.com熱心網友回復:
如果寫小數點,字母“f”是否必要?
沒有必要,但最好使用f帶有double變數/數學的-less 常量和帶有f后綴的常量float。
兩個都不是浮動的嗎?
兩者都有浮點數。
但是float和double不一樣。
型別差異
附加一個fmake 浮點常量型別float而不是double.
這可以操縱到不同的代碼與_Generic和<tgmath.h>以及在浮點運算式中使用的數學。
鑒于通常的范圍和精度差異,會出現細微的、有時不是那么細微的差異。
價值差異
該f告訴編譯器使用的平時較窄的范圍和精度float。
例如0.1 != 0.1f。
有時它也會產生價值差異,即使分配給float.
uj5u.com熱心網友回復:
我不是 100% 確定 XC16,但通常省略尾隨f會導致您的浮點數被編譯器解釋為double. 這f是專門告訴編譯器它正在查看一個float.
uj5u.com熱心網友回復:
該f后綴進行恒定10000.0f有型float。
常量10000.0有型別double。
uj5u.com熱心網友回復:
帶有forF后綴的浮點常量的型別為float。
沒有后綴的浮點常量是型別double。
后綴為lor 的浮點常量L為 型別long double。
這是三種不同的浮點型別。(取決于實作方式,他們可能會或可能不會有三種不同的表述。例如,它的情況并不少見double,并long double具有相同的尺寸和代表性。)
在10000.0vs.的特定情況下10000.0f,它可能沒有太大區別。像 10000.0 這樣的小整數值通常可以在所有三種浮點型別中精確表示,因此任何隱式或顯式轉換都不會丟失任何資訊。但是使用與將要使用的背景關系相匹配的型別仍然是一個好主意。
請注意,如果省略小數點,10000則為整數常量(型別為int),并且10000f是語法錯誤。帶或不帶后綴的浮點背景關系必須有小數點或指數。
這是一組比整數常量更簡單的規則,其中有更多不同的型別、更多后綴,并且常量的型別可以取決于它的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407552.html
標籤:
上一篇:檢查C中字串中的任何特殊字符
