1樓:匿名使用者
4/2.0的結果是個double,它佔用8個位元組,double格式的2.0在記憶體中是這樣存放的 00 00 00 00 00 00 00 40(至於為什麼這樣存放,三言兩語數不清楚,你要是感興趣就搜尋ieee754浮點數規則自己看看) ,double格式2.
0的低位4個位元組全是0,而printf的%d格式決定了它只讀取前4個位元組(因為int是4個位元組)結果就是0了,
你試試這樣:
printf("%i64x",4/2.0); //把64位double格式的2.0以16進位制整數方式輸出
應該輸出4000000000000000 注意%i64的i要大寫,一些老舊的編譯器可能不支援這個格式,也可以試試%llx或者%lld, lld格式會輸出10進位制的4611686018427387904
2樓:
因為 4/2.0 計算結果是浮點數,不能按整數格式輸出,引起錯誤。
修改一下,把 4/2.0 的計算結果做一個強制型別轉換,轉換為整數後,用%d 格式輸出才是正確的
#include
int main()
3樓:匿名使用者
應該改為
#include
void main()
4樓:匿名使用者
格式錯誤,%d是整數,4/2.0的結果是小數
////修改如下
printf("%d\n",int(4/2.0));
5樓:扯淡書生
輸出格式錯了,應該是%f
4/2.0結果是浮點數,輸出格式為%f
%d是整型的輸出格式
c語言:為什麼執行結果是0..
6樓:匿名使用者
關鍵是瞭解自減運算子機制:
y--;和--y;單獨在一個語句是沒有區別的,執行完後,y在原值基礎上減1;
但與其它**出現在同一語句中時,就有區別了,--y先自減,再取y值參與其它運算 ;y--先取y值參與其它運算,再自減。
while(--y);中,迴圈退出條件是括號中的值為0,即y自減1後的值是0;
print(y--)之前,y值為0,printf先輸出y的這個值0,然後y自減1,語句執行完,y為-1.
c語言輸出錯誤結果一直為0
7樓:聽不清啊
double應該使用%lf格式符,不是%f。
最後的輸出格式為%3.1lf(小寫的l)
C語言問題,C語言問題C語言問題
選a首先,空格也是一種字元,b d選項分別把空格賦給了c1,c1 其次,c選項不完整,排除 不僅a這樣,10a20b也是可以的。 聽不清啊 答案a 10a 20b cr 是正確的。因為scanf d c 時,會忽略數字前面的空格,遇到非數字字元就會結束讀取 非數字字元會留待下一次讀取,即被後面的 c...
c語言計算為什麼結果不對,c語言計算結果不對 哪裡有問題?
在double轉換成int時,應當考慮到數值並不準確的問題,可以考慮自己要求的精度極限,比如是0.00000001,可以寫成 printf d n int a pow 10,b 1 0.000000005 這樣可以配合取整實現在那位上的四捨五入。 gta小雞 計算整數的冪,不要使用pow函式,它返回...
c語言,以下程式的輸出結果是,C語言問題 以下程式的輸出結果是?
輸出1 3 這是遞迴了,所以先是fun 3 進入後發現3 2 1,所以又繼續func 3 2 也就是fun 1 進入發現1 2 0,就執行prinft,輸出1,然後fun 1 就返回了 返回出去正好是fun 3 的prinft,輸出3 進入fun 3 進入fun 1 輸出1退出fun 1 輸出3退出...