c++ - c 和 c++ 中 sizeof 运算符的工作是否不同

标签 c++ c

<分区>

我写了一个小的 printf 语句,它在 C 和 C++ 中的工作方式不同:

    int i;
    printf ("%d %d %d %d %d \n", sizeof(i), sizeof('A'), sizeof(sizeof('A')),    sizeof(float), sizeof(3.14));

上述程序使用 gcc 编译器在 c 中的输出是 4 4 8 4 8

使用 g++ 编译器在 c++ 中上述程序的输出是 4 1 8 4 8

我预计 4 1 4 4 8 在 c 中。但结果并非如此。

printf sizeof(sizeof('A')) 中的第三个参数给出 8

谁能告诉我这是怎么回事

最佳答案

特别是与 sizeof 操作符无关;相反,C 中字 rune 字的大小与 C++ 不同,因为 C 中的字 rune 字是 int 类型,而在 C++ 中它们是 char 类型。

参见 Why are C character literals ints instead of chars?获取更多信息。

关于c++ - c 和 c++ 中 sizeof 运算符的工作是否不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962882/

相关文章:

c - 默认选项 GCC

c - golang中等效的结构数组

c - WIFEXITED、WEXITSTATUS等中 "W"的助记符是什么?

sprintf() 的可定制实现

c++ - 如何从队列中获取前 5 个元素 C++

c++ - 将内联 ASM 转换为 x64 igraph 的内在

c++ - 构建 libuv 时 undefined symbol

c++ - 逆总函数

C++ If/else/嵌套问题

c - 有多少种方法可以锁定c