2012-08-25 37 views
-1

可能重复:
Size of character ('a') in C/C++什么是在C的printf( “%d n” 个,的sizeof( 'A'))的结果和C++

OS:linuxmint 32位

编译器:GCC & G ++

我试试这个代码:

#include <stdio.h> 

int main() 
{ 
    printf("%d\n",sizeof('a')); 
    return 0; 
} 

和我用gcc编译它,结果是4,我改变至g ++,它是1

然后我使用: sizeof(char),并且结果是1

我使用: char s ='a'; printf('%d \ n',sizeof(s));

,其结果是1

,但我在网上搜索,也有的人说,他们得到的12结果。

那么为什么会有这么多不同的结果呢?

+1

C中字符常量类型(如'a')的类型为int。在C++中,它是char。 –

+1

除了没有在网站上搜索类似的问题,你也应该照顾'printf'。因为这是一个无符号类型,所以'%d'从来不是用于打印'size_t'类型的值的正确格式,并且可能具有不同于int的宽度。 –

+0

@JensGustedt:'size_t'的格式是'“zu”'(假设您的实现已经追溯到20世纪后期)。 –

回答

1

C中的字符常量表示为int当您指定char类型时,它只有1个字节。

1

'a'这样的字符文字在C89中的类型为int,这是gcc使用的默认标准。在C++中,重载字符和字符串的类型分别为charchar*(请考虑std::cout << 'a')。由于x86和x64_86上的sizeof(int) == 4sizeof(char) == 1可以获得您描述的结果。

1

sizeof(char)始终为1,均为C和C++。在C中,'c'的类型为int,所以sizeof('c')sizeof(int)相同。在C++中,'c'的类型为char,因此sizeof('c')sizeof(char)相同,即1.

相关问题