如果有浮標的最大範圍? (我的意思是有其他規格比IEEE754或使用非常大的浮動表示的異國平臺)。C規格浮點數的最大位數
我想知道這一點,因爲我從基於Semmle分析器這樣的錯誤:
sprintf(acKey, "Equity(0,%f)", dDate);
錯誤:此轉化可產生長度328,這超過了200
分配的緩衝區大小的字符串其中acKey是尺寸的局部字符陣列200
由於
如果有浮標的最大範圍? (我的意思是有其他規格比IEEE754或使用非常大的浮動表示的異國平臺)。C規格浮點數的最大位數
我想知道這一點,因爲我從基於Semmle分析器這樣的錯誤:
sprintf(acKey, "Equity(0,%f)", dDate);
錯誤:此轉化可產生長度328,這超過了200
分配的緩衝區大小的字符串其中acKey是尺寸的局部字符陣列200
由於
如果該值的dDate
是-0x1.fffffffffffffp1023
,則%f
格式說明生產「-179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000」,它包含317個字符。在格式字符串和空終止符中添加十個其他字符的結果爲328個字符。
-0x1.fffffffffffffp1023
是最大的幅度有限負數在IEEE-754的64位二進制浮點表示的。雖然它沒有用格式化的十進制數字表示的精度表示,但確實代表了該數字。 (C標準可能允許有些不同的顯示,比如顯示零點而不是確切的數字,但顯示的數字應該是相同的,一個好的C實現將顯示所有確切的數字數字。)
'1/* - */+(DBL_MAX_10_EXP + 1)+(1 + 6)/ * .000000 */+ 10 + 1/* OP&term * /'? – chux
誤差不談論浮動的大小,它談到了浮動的字符串表示。 – Devolus
是的,只是更新了標題。 – GaTTaCa
它是一個char數組。抱歉錯字。 – GaTTaCa