-1

可能重复:
C/C++ 中字符('a')的大小

操作系统: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

但是我在网上搜索,有人说他们得到了1or的结果2

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

4

3 回答 3

1

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

于 2012-08-25T16:05:33.337 回答
1

像C89 这样的字符文字'a'有类型,这是. 在 C++ 中,重载字符和字符串分别具有类型和是很重要的(想想)。由于和在 x86 和 x64_86 上,您会得到您描述的结果。intgcccharchar*std::cout << 'a'sizeof(int) == 4sizeof(char) == 1

于 2012-08-25T16:14:20.977 回答
1

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

于 2012-08-25T16:14:50.903 回答