1樓:
因為printf("%d %d\n",m==n,m);中:
n=(1.1*9.9-3.
3*4.4)/(1.1*5.
5-2.2*4.4)=(-3.
63)/(-3.63)=(int)1.0。
按理說,1.0取整後應該n==1;但是,浮點數在計算機中是按階碼+尾數(原碼)表示的,由於運算過程中取值是有限的,所以不能精準地表示1.0的結果,那麼這裡的1.
0就只是非常接近整數1的0.999999999……它被取整賦給整型n後n=0(注意取整不進行四捨五入,是直接把小數部分扔掉),而m=1,所以m==n為「假」取0,所以輸出了0 1這個結果。你可以在m=-3/-3;前加一句printf("%d\n",n);驗證一下看看n到底是0還是1。
2樓:潮範君
n和m變數都是整型的, 你哪個表示式是浮點數的運算,實際上小數部分都被截斷了.
3樓:匿名使用者
因為你定義的為int型為整形,也就是說只適用於整數形式,若將int改為double或float浮點型的話則可以計入小數點,輸出格式也要與輸入相對成立。
4樓:丶小夜
簡單的說 就是你用int 型別的變數來存放小數,那麼小數點後面的數就沒有了 比如 int n; n=1.1; 那麼這個時候n==1;
5樓:匿名使用者
你想要表達個什麼意思
c語言,為什麼結果是13c語言,為什麼結果是
答案我執行過了,是 1 3 4 5,現在我來解釋一下,希望我的解釋你能夠理解 首先int a 5 1 注意到c c 語言規定是a 0 1,a 1 4,a 2 5 而不是a 1 1,a 2 4,a 3 5 2 經過 while i n k a i i 由於a i 即a 1 4,而k 3不大於a 1 不...
這道C語言的答案為什麼是這樣,看一道C語言程式答案,為什麼會這樣?
1 能整除形參x且不是偶數的各整數 是說求 各整數 這個 各整數 滿足兩個特徵 能整除形參x 不是偶數 這兩個特徵寫成 就是 x i 0 i 2 2 這些除數的個數通過形參n返回 是通過形參返回,而不是返回值返回。如果用return就 是函式的返回值。形參是n,兩條語句 n 0 和 n 即為將形參n...
C語言這個函式執行結果為什麼是0,4,
c a a a b,b 4 最先執行的是 a,a變成1 然後執行的是 a a,a變成0 然後執行的是c a,c變成0 相當於不變 然後執行的是a b,a變成0 相當於不變 然後執行的是b 4,b變成4 所以最後結果是a 0,b 4,c 0 這是一個逗號表示式,逗號表示式的結果取決於最後一個表示式的結...