爲什麼當我的溢出計算是printf()函數的參數時,float不會溢出,但是當編碼計算被分配給單獨的變量float_overflowed並且不是printf函數的參數I得到'inf'的預期結果? 這是爲什麼發生?是什麼造成這種差異?浮點溢出但不是當C中的printf參數?
導致我出現這個問題的代碼和結果如下。
這裏是我的代碼按預期計算是一種論點,即未執行:當計算不是一個參數
This demonstrates floating data type overflow. We should get an 'inf' value.
3.400000e+38*10=3.400000e+39.
而且,:
float float_overflow;
float_overflow=3.4e38;
printf("This demonstrates floating data type overflow. We should get an \'inf\' value.\n%e*10=%e.\n\n",float_overflow, float_overflow*10); //No overflow?
結果
float float_upperlimit;
float float_overflowed;
float_upperlimit=3.4e38;
float_overflowed=float_upperlimit*10;
printf("This demonstrates floating data type overflow. We should get an \'inf\' value.\n%e*10=%e.\n\n",float_upperlimit, float_overflowed); //for float overflow
及其結果:
This demonstrates floating data type overflow. We should get an 'inf' value.
3.400000e+38*10=inf.
根據我的理解,當將信息存儲在一個變量中時,「溢出」是opccurs。因爲,否則,它只是指數中的另一點。 – cyphar