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

C語言整型數據詳解:常量、變量與類型轉換規則

     編輯:C 語言基礎

整型常量的三種表示法

進制前綴合法數字範例
十進制無(首位非0)0-9123, 4567
八進制00-70173, 077
十六進制0x / 0X0-9, a-f, A-F0x1F, 0XABC

整型常量類型自動推導規則

  • 十進制:優先 int → long → unsigned long(視數值大小)。
  • 八/十六進制:int → unsigned int → long → unsigned long。
  • 後綴 L/l 強制指定為 long(如 10L)。

整型變量定義與類型轉換

C 語言要求變量使用前必須定義類型。不同整型混合運算時,遵循整型提升與尋常算術轉換:

  1. 整型提升:char、short、位域、枚舉類型提升為 int(若 int 能容納所有值),否則為 unsigned int。
  2. 尋常算術轉換:操作數類型不同時,向「精度更高、長度更長」方向轉換。signed 優先,無法完整表示時轉 unsigned。

經典陷阱:有號與無號比較

int d = -1;
if (d <= sizeof(arr)/sizeof(arr[0]))  // sizeof 回傳 size_t (unsigned)
    // 條件永遠為真!因為 -1 被轉為極大無號數

解決:強制轉型 (int)(sizeof(arr)/sizeof(arr[0])),或盡量使用有號類型表示數量。

函數參數傳遞中的隱式轉換

  • K&R C:無原型時參數同樣發生提升。
  • ANSI C:有原型則不提升;可變參數函數(如 printf)仍會提升。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved