首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VC6.0 sizeof(int) 與 sizeof(double) 實測:現代編譯器通常為 4 和 8

     編輯:程式設計疑難解答

現象

VC6.0 下 sizeof(int)=2、sizeof(double)=4,與現代 64 位編譯器常見的 4 和 8 不符。

原因

  • VC6.0 發布於 1998 年,默認目標 16/32 位架構,int 為 16 位(2 字節)。
  • 現代編譯器(VS2017+/GCC/Clang 64 位模式)int 為 32 位(4 字節),double 為 64 位(8 字節)。
  • C++ 標準僅規定 sizeof(char)=1、sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long),具體大小由實現定義。

建議

  • 代碼中使用 sizeof(int)、sizeof(double) 而非硬編碼數字。
  • 需固定寬度時用 std::int32_t、std::int64_t (C++11 )。
  • 棄用 VC6.0,升級至現代 IDE(VS2022、CLion、VS Code + CMake)獲得標準合規與 64 位支持。

編譯器實現差異是跨平台開發必須面對的現實,使用標準類型特性編寫可移植代碼。

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