话说昨天深夜写程序,一个神奇的Bug折腾得我死去活来。后来终于发现问题所在,这里简单说下,并想向大家问问未来的发展趋势。
话说字符常量,最基本的东西了:'c'。问题是你知道它占多大内存空间吗?来个小程序看看:
/* char.c */
#include <stdio.h>
int main() {
printf("sizeof(char) = %d\n", sizeof(char));
printf("sizeof('c') = %d\n", sizeof('c'));
printf("sizeof(L'c') = %d\n", sizeof(L'c'));
printf("sizeof('中') = %d\n", sizeof('中'));
return 0;
}
来看看输出:
操作系统:Fedora 14 64bit;
编译器:GCC 4.5.1 64bit;
编译命令:gcc char.c -o charC //C语言,输出charC
sizeof(char) = 1
sizeof('c') = 4
sizeof(L'c') = 4
sizeof('中') = 4
操作系统:Fedora 14 64bit;
编译器:GCC 4.5.1 64bit;
编译命令:g++ char.c -o charCPP //C++语言,输出charCPP
sizeof(char) = 1
sizeof('c') = 1
sizeof(L'c') = 4
sizeof('中') = 4
操作系统:Windows 7 64bit;
编译器:VC 16.00.30319.01 32bit;
编译命令:cl char.c /TC /FecharC.exe //C语言,输出charC.exe
sizeof(char) = 1
sizeof('c') = 4
sizeof(L'c') = 2
sizeof('中') = 4
操作系统:Windows 7 64bit;
编译器:VC 16.00.30319.01 32bit;
编译命令:cl char.c /TP /FecharCPP.exe //C++语言,输出charCPP.exe
sizeof(char) = 1
sizeof('c') = 1
sizeof(L'c') = 2
sizeof('中') = 4
结果不分析了,想和大家探讨下未来发展趋势。