首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言算術轉換實例:char類型溢出與補碼演示

     編輯:關於C語言

C語言算術轉換實例:char類型溢出與補碼演示

C 語言中 char 是否有號視實現定義,但參與運算時會提升為 int,結果再截斷存回 char。以下兩例展示溢出行為。

程序 1:有號溢出

#include <stdio.h>
int main() {
    char c1 = 128;  // 假設 char 有號,128 超出範圍,實際位模式 10000000 = -128
    char c2 = 1;
    char c3 = c1 + c2; // 提升為 int 運算:-128 + 1 = -127,截斷存回 char
    printf("%d\n", c3); // 輸出 -127
    return 0;
}

結果:-127

程序 2:無溢出

#include <stdio.h>
int main() {
    char c1 = 12;
    char c2 = 1;
    char c3 = c1 + c2; // 12 + 1 = 13
    printf("%d\n", c3); // 輸出 13
    return 0;
}

結果:13

關鍵點總結

  • 整數提升:char/short 運算前自動轉 int。
  • 有號溢出屬於未定義行為(C 標準),但常見實現採用補碼環繞。
  • 建議顯式使用 signed char 或 unsigned char 避免歧義。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved