1樓:吉祥二進位制
運算結果是0。
這是因為3/2是一個整型數常量表示式,整型數常量表示式有編譯器計算機執行的結果,3/2的商是1。這是編譯器計算出來的3/2這個常量表示式的值,但是printf()要輸出格式為%f,即輸出一個單精度浮點數。在c語言中浮點數使用的是ieee754編碼,也就是說一個32位的int型別的數1,使用ieee754編碼所表示的數值是多少的問題。
可以編寫如下**:
#include
int main()
執行結果與問題中的 printf("%f\n", 2/3)是一樣的,都為0。
要獲得正確的結果,應該對整型常量表示式進行強制型別轉換:
printf("%f\n", (float)(3/2));
2樓:
終於找到了,前面的一大段我就略去了,從這開始:
f 接受浮點或者雙精度值並將它轉換為十進位制符號表示法,格式為 [-] ddd.ddd。基數字符(在這裡顯示為十進位制點)後的數字位數等於規定的精度。
lc_numeric 語言環境編目確定在這個格式中使用的基數字符。如果不指定精度,則輸出六個數字。如果精度是 0(零),將不顯示基數字符。
恩,有點難理解,我的理解是這樣的:整型的精度無疑就是0,所以在轉換的時候直接就不顯示基數字符了。也就是說無論你給什麼樣的整型,你以浮點數輸出的話都會得到0.000000。
3樓:匿名使用者
%f 的意思就是我的結果是float型。1.500000
4樓:孤單的等待回憶
1.000000
這有個**轉換的!!
c語言中return的作用,C語言中return的作用?
作用1 表示返回,這個程式可以結束了,可以不帶引數,如果你的成員執行到這裡,你就不往後執行了,可以加一個return語句,就不會再執行了 作用2 返回指定型別的值,在定義函式的時候不是有 int af int 這裡是返回值,return 後面接的就是這個返回值,這個函式執行後就可以給別的變數賦值了,...
c語言中switch結構的使用,C語言中switch結構的使用
秋風依舊好 因為case後面不能接範圍,也就是說case後面是一個確實固定的常量.用下面的方法比較好,include int main 你可以先把範圍用字母或常量代替 再用switch語句 資料 include void main else printf score scanf d s system...
c語言中的strlen函式,C語言中的strlen函式
冰 vs 霰 strlen是測量字串長度的 char d 和char a china char b 是等價的 是陣列的表示形式 而char c 卻是字元陣列所以並不能得到結果 strlen函式測量字串中字元個數,不包括結尾的 0 字元,你的 char c沒有結尾的 0 不是合法的字串,所以結果不對 ...