一段很少的代码,却隐藏的不可告人的秘密,废话不对说,贴上代码你会发现他的神奇之处,并希望有解的朋友能给解释一下,在这里先谢谢了。
#include <stdio.h>
int main(void)
{
unsigned int a = sizeof('a');
printf("%lu\r\n", a);
return 0;
}
就是这样一段简单的代码,乍一眼看,感觉结果是1,可是在编译成.c文件执行的时候发现是4,感觉很是不可思议,求一个字符‘a’的大小怎么可能是4呢,应该是1才对,仔细想了一下才明白过来,‘a’本来就是一个整数,在我刚学习c语言的时候老师就说过,字符在内存中的存储就是一个int型的ASSIC码,所以sizeof(‘a’)的时候就相当于sizeof(int),所以打印结果就是4了,这个可以解释的通。也许有的朋友说,这没有什么神奇的,也没有什么不解的,但是接下来的事情让我百思不得其解。
当我信心满满的解释的时候,一个朋友提出,如果你在.cpp文件中,用g++去编译,结果就是1,当时我立刻的就在我的shell中敲了一个mv sizeof.c sizeof.cpp 然后编译运行,发真的是1,然后又试了一下.c文件,用g++编译过,执行之后还是1.
这就定位了问题,是编译器的不同,但是这是为什么呢?不解、、、、、