c語言什麼情況下得負數
來源:魅力女性吧 2.57W
出現負數,是因為奇數、偶數的和太大,超過了long(長整型)類型的最大值了。
個數是對的,0-151554545共有151554546個數,其中奇數偶數各有75777273個。
至於for不動了,是for循環進入無窮迴圈了,你的編譯器中int是2bytes,最大值為32768,當i加到32769的時候,就越界了,成為負數,所以i永遠不會大於你輸入的151554545這個數值,所以無窮迴圈。
這個問題有多種可能,不一而足。
算法有錯誤,最終計算結果是負數。輸出自然會是負數。
例如:
int a=1
int b=a-2
printf("b=%d",b)
//輸出結果:b=-1
超過變量類型的最大取值範圍,發生溢出。
例如Turbo C裏int是16位,取值範圍-32768~32767。如果計算過程當中,數值超過32767,由於補碼的關係。結果就有可能是負數。這種情況,就需要使用取值範圍更大的數據類型。
例程:
#include<stdio.h>
void main(){
int a,b,ch
a=32767
b=a+1
printf("a=%d,b=%d",a,b)
ch=getch()
}   
//輸出結果:a=32767,b=-32768