C語言中讓兩個正的int型變數相加的程式為什麼執行結果會出現負數

2021-04-22 14:17:37 字數 1156 閱讀 7782

1樓:慕容冰綃

因為int是有最大限制的,當相加的結果超出這個限制之後,(就是所謂的溢位),最高位可能會變為1,也就是表示負數,所以結果為負數

2樓:匿名使用者

一般定義的int型變數都是指有符號型的,數值範圍是-2^15~(2^15-1),儲存的時候是以二進位制版數儲存,佔權兩個位元組,一共是有16位,最高位為符號位,符號位為0,即為正數,為1,即為負數。

如果想計算更大的資料的話,可以定義別的資料型別unsigned long int 即為無符號的長整型。

printf中的輸出格式也需要做相應變化,如%ld,或者%e之類的定義成double型可以計算範圍更大,輸出選擇%e

3樓:匿名使用者

你什麼編譯器啊?我執行你的程式沒問題啊,

檢查一下你的編譯環境吧…………

在c語言中將一個很大的正整數賦值給一個int型別變數a,輸出a時有時會顯示負值,為何?

4樓:聽不清啊

在不同的抄c系統中,int有不同的表示範圍。

32位(4位元組)的int,它可以表示的數字範圍是-2147483648~+ 2147483647,共可表示4294967296個不同的數。

這是因為它有點像我們用(每個檔位上只可以表示0~9)的算盤。假如我們的一個算盤有4個檔位,它能表示從0~9999共10000個不同的數字。當我們要把比9999更大的數字存放到算盤上時,走出的部分就「丟失」了。

如果要存的數字是12345,按「老規矩」存放完畢後,讀取算盤上的數字時,由於資料發生了丟失,只能讀到2345。這是由於12345-10000=2345。

再來看計算機裡的int,如果我們要把2147483648存入到int變數中時,由於超出了範圍,就發生了丟失。讀取時,就變成了2147483648-4294967296=-2147483648了。

其它更大的數字,所變成的負數大小,也是這樣的規律(都是減去了4294967296或它的倍)。

5樓:玩尼丶瑪

int 型只可以表示來 —36768到+32767 這其實是一自

個邏輯圈,意思就是說如果該數超過了最大表示範圍那麼就從頭開始,舉個例子吧 ,如 +32788超過了最大表示範圍,比最大表示範圍多1,那麼該數其實就是-32768

c語言中,比如我輸入了int型的變數,然後用什麼方法

int n char s 50 cin n sprintf s,d n int t,len strlen s for i 0 i c 中如何給一個int型別的變數賦值成一個以零開頭的整數 int型別只是整數,和數學中的定義一樣,不管字首有幾個0,值都相等。在c c 中,整版數字面量權的字首0表示八進...

c語言中int型的數超出範圍會是怎樣的

從c語言的內bai 部處理機制來說du,int型數超出zhi範圍 溢位 被認為是一個正 dao常現象,只會產生錯誤的內計算結果或邏輯錯容誤,而不會觸發資料溢位的異常。因此,為了避免因為整數溢位而產生程式邏輯或計算錯誤,程式設計師必須自行檢測可能出現的溢位或者確保不會出現資料溢位的情況。c語言對於in...

c語言中printf直接列印兩個函式介面的返回值問題

輸出應該是sunday monday 第一行 是定義一個靜態的指標字串!第3行是定義一個靜態函式 strcpy buf,msg index 函式的意思吧msg index 複製到buf字串裡,然後現在計入main函式,輸出 計入函式get day傳入引數0進入函式就是msg指標陣列msg第一個引數是...