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

C語言學習教程第二章(二):整型變數進階與混合運算類型轉換

     編輯:C 語言基礎

整型常量後綴補充

在 16 位字長機器上,基本整型佔 2 位元組。超出範圍時需用長整型(L/l)或無符號型(U/u)。前綴與後綴可同時使用:

158L        // 十進制長整數
012L        // 八進制長整數 (10)
0X15L       // 十六進制長整數 (21)
358u        // 無符號整數
0XA5Lu      // 十六進制無符號長整數 A5 (165)

整型變數詳細分類

類別類型聲明符位元組範圍
基本型int2-32768~32767
短整型short int / short2-32768~32767
長整型long int / long4-2147483648~2147483647
無符號基本型unsigned int / unsigned20~65535
無符號短整型unsigned short20~65535
無符號長整型unsigned long40~4294967295

混合類型運算與自動類型轉換

不同類型的量可參與運算並相互賦值,編譯系統自動完成類型轉換。規則遵循「向較高精度/較大範圍類型提升」。

範例程式

void main() {
    long x=5, y=6;
    int a=7, b=8, c, d;
    c = x + a;  // long + int → long 運算,結果賦給 int c(截斷)
    d = y + b;
    printf("c=%d, d=%d", c, d);
}

輸出:c=12, d=14。雖然運算過程提升為 long,但最終賦值給 int 變數時會截斷高位(若超出 int 範圍則溢位)。

練習追蹤

[Practice] //1
int a,b; short int c; short d=100;
a=d-20;        // a=80
b=a+d;         // b=180
c=a+b+d;       // c=360
d=d-a+c-b;     // d=200

[Practice] //2
int a=5, b=9; long int c; long d;
c=a+b-7;       // c=7
d=a*b*c;       // d=315
c=d*d*d;       // c=31255875 (超出 int 範圍,但 c 是 long)
a=c-d;         // a=-5112 (截斷)

[Practice] //3
int a=6, b=19; unsigned int c; int d;
c=a-b+7;       // c=65530 (無符號環繞: -6+7=1? 實際 6-19=-13, -13+7=-6 → 65530)
d=b*c;         // d=-114 (有符號解釋)
a=b+c+d;       // a=-101
b=-a;          // b=101

關鍵觀察: 無符號與有符號混合運算時,有符號轉為無符號參與運算,結果可能出乎意料。賦值給有符號變數時再按補碼解釋。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved