1樓:
你就把取值範圍理解成一個圓圈,
int取值範圍:-32768-32767
超過了32767(最大數),就繞一圈到-32768(最小數),再從最小數開始往上加;
所以會是-1懂了麼
2樓:
上面程式不能正確執行~就異常退出咯~~得到的就是-1;
~~為什麼不能正確執行~~
1 你的unsingned出錯~應該是unsigned啦~2 你定義的a為無符號整型,而%d輸出的的是有符號整型~~~定義與輸出的型別不一致哈~~
需要說明一點的是a的值沒有溢位,因為unsigned int型的取值範圍是0~4294967295(此時int為32位計算機中的4b,若int為2b,則取值範圍是0~65535,現在一般的都是32位及以上的計算機,所以不會溢位咯)
還是多看看書吧~~~~
3樓:匿名使用者
首先這個int一定是16位的,其次%d列印有符號整數
a==0xffff==(unsigned int)-1
4樓:匿名使用者
樓主,這是**溢位問題,因為c語言中的每個型別都是有範圍的,如果超出這個範圍,就會認為是假的,即為-1,因為c中-1代表假
5樓:
在不同的編譯器裡,資料型別的長度不一樣,65535超過它的表達範圍了!
6樓:若琳若現
樓主 寫出這樣 printf("a=%u",a);就ok了
這是輸出無符號型
7樓:匿名使用者
我用的是vc結果是65535,應該你用的程式有關
還有unsigned打錯了
8樓:手機使用者
%d是按補碼輸出,即把a按有符號型別處理,超出了int的這樣的最大範圍,最高為成了符號位。
問c語言的小問題,有經驗的回答,問一個c語言的小問題,有經驗的回答
int main 指的是執行完了main函式的返回值在初學階段,這個返回值是沒有作用的 一般可以作為程式有沒有成功執行完畢的標誌,而且如果出錯可以記錄出錯的型別 0就是正常執行完畢,1,2,3等就是有錯誤 可以自己設的,不過好像有規範 要寫複雜的程式或者要跟蹤錯誤的話就很有必要把main 設成int...
問問題 C語言 ,問一個問題 C語言
請將分加給上面的朋友。我來綜合一下上面各位朋友的答案 1.程式輸入有錯 第三行 scanf d,d,a,b 少了引號 應該是scanf d,d a,b 2.在原程式的最前面加上如下語句 include stdio.h int max int x,int y 如果你用的時microsoftvisual...
問關於C語言的問題高手來,問一個關於C語言的問題高手來
include int max int x,int y,int z 函式申明void main int max int a,int b,int c int a,b,c,f 這句是錯的 f max a,b,c printf max d n f int max int x,int y,int z int...