1樓:it孤鶩
daan 是double 型別
你應該把%d 改成 %lf
c語言問題,為什麼會輸出負數
2樓:匿名使用者
在你的switch語句最後都加一個default:看一下switch(d)
switch(u)
如果出現error這行,說明你的fflush()沒有起作用,改正方法是在scanf()函式後,加一個getchar();
如果沒有出現,把你的輸入資訊粘出來,即x d u都是什麼。再幫你看
3樓:匿名使用者
這個問題有多種可能,不一而足。
演算法有錯誤,最終計算結果是負數。輸出自然會是負數。
例如:int a=1;
int b=a-2;
printf("b=%d",b);
//輸出結果:b=-1
超過變數型別的最大取值範圍,發生溢位。
例如turbo c裡int是16位,取值範圍-32768~32767。如果計算過程當中,數值超過32767,由於補碼的關係。結果就有可能是負數。
這種情況,就需要使用取值範圍更大的資料型別。
例程:#include
void main()
//輸出結果:a=32767,b=-32768
4樓:無丹羿昭
我的感覺是,在你執行printf
這個過程中,輸出%d的時候,其實你的a的值已經出問題了,所以後面也會有錯。你可以試試看,把%d放到第二個輸出,你就會發現,第一個問題,後兩個出問題了。你可以改成這樣。
當你在執行第二個printf的時候,你的a的值就是為double型等於1.550000,然後再開始執行第二個printf
5樓:匿名使用者
溢位了,把資料型別定大一些
6樓:囂張得很
把用float定義的變數全改成double定義,把用%f全改成%lf
在c語言裡要輸出一個負數的值!
7樓:
type(數的型別)number(你要輸出的數);
printf("% +d",number)例如int i=-617;
printf("% +d",i);
"+"號是輸出符號的
8樓:匿名使用者
#include
void main()
這樣啦呵呵輸出你要的 另一個類似哦
c語言輸出,c語言輸出
首先解釋為什麼是負值 因為溢位了 111111 111111 12345654321超出了int能表示的範圍 可能你要問 不是已經 lld了嗎 沒錯 lld是用於long long型別的,但只代表輸出的時候按照longlong的型別輸出,並不能影響後面引數的實際型別對於整型常數,c語言預設都是int...
c語言中printfd ,d會輸出什麼
d 在後面,第一步,該行 先呼叫d的值,完成該行 功能後。第二步再把d的值 1並存入d的地址。d,在前面,則兩步倒過來。會輸出變數d加上1的結果啊 d 輸出d d輸出 d c語言中printf裡的d 是什麼意思?printf中的 d的意思是輸出 個寬度的 d 整形 例子 a 5 b 6 printf...
一道C語言題,為什麼輸出的結果為負數
在你的switch語句最後都加一個default 看一下switch d switch u 如果出現error這行,說明你的fflush 沒有起作用,改正方法是在scanf 函式後,加一個getchar 如果沒有出現,把你的輸入資訊粘出來,即x d u都是什麼。再幫你看 這個問題有多種可能,不一而足...