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

C++ 語言基礎:資料型別完整對照表與型別轉換陷阱

     編輯:VC 教學

C++ 資料型別

BASIC 等語言可任意指派數值型別給變數,翻譯器自動分配空間。C++ **必須先宣告型別再使用**,編譯器進行型別檢查確保執行順利。型別使用不當導致編譯錯誤或警告,便於分析修正。

部分型別有帶號/無號之分:帶號含正負數,無號僅含正數。

表 1.1 C++ 資料型別(32 位元程式)

資料型別位元組數取值範圍
char1-128 ~ 127
unsigned char10 ~ 255
short2-32,768 ~ 32,767
unsigned short20 ~ 65,535
long4-2,147,483,648 ~ 2,147,483,647
unsigned long40 ~ 4,294,967,295
int4同 long
unsigned int4同 unsigned long
float41.2E-38 ~ 3.4E+38
double82.2E-308 ~ 1.8E+308
bool1true 或 false

int 與 long 為何同樣 4 位元組?

遺留問題。16 位元環境 int 2 位元組、long 4 位元組。32 位元環境(C++ Builder 僅產生 32 位元程式)兩者皆 4 位元組。

bool 型別說明

C++ Builder 和 Borland C++ 5.0 中 bool 是真正資料型別。某些編譯器 bool 只是 typedef int bool(建立別名)。

浮點數僅限 float/double

其他型別僅涉及整數。指定帶小數點數值給整數型別會**捨棄小數部分**(非四捨五入):int x = 3.75; // x = 3。Windows 程式鮮少用浮點數。

型別自動轉換與陷阱

C++ 可在必要時進行型別轉換:


short result;
long num1 = 200, num2 = 200;
result = num1 * num2; // 混用型別,C++ 自動轉換

結果驚人:**25536**(非 40000)。這是繞接:short 最大 32767,超過則從 -32768 繼續。如汽車里程表 99999 歸零。

驗證程式:Wrapme.cpp


#include 
#include 
#pragma hdrstop
int main(int argc, char** argv) {
    short x = 32767;
    cout << "x = " << x << endl;
    x++;
    cout << "x = " << x << endl; // 輸出 -32768
    getch();
    return 0;
}

用 int 無此問題(範圍 ±20 億),但佔 4 位元組(short 2 位元組)。大多數應用差異不明顯。

編譯器警告視同錯誤

無法轉換時產生編譯錯誤 Cannot convert from x to y;可能精度損失時警告 Conversion might lose significant digits。**警告應視同錯誤**,努力達到零警告編譯。無法避免的警告必須徹底理解並盡力修正。

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