c++ - 为什么我在应用 sizeof 运算符时会得到不同的结果?

标签 c++ c arrays sizeof

我有这个程序

#include <stdio.h>
int main()
{
   char arr[100];
   printf("%d", (int)sizeof(0,arr));
}

这在编译为 C 文件时打印 4,并在 C++ 文件中打印 100。为什么?我正在使用 gcc。

最佳答案

在 C 中,逗号运算符右侧操作数的结果具有类型和 。在 C 中,逗号运算符不会产生左值。因此存在左值到右值的转换,导致数组类型衰减为指针类型。所以在 C 中你得到的是 sizeof(char*).

的结果

在 C++ 中,逗号表达式的结果是左值。没有这样的转换[如在 C 中],你得到的是 sizeof(arr) 即 100

关于c++ - 为什么我在应用 sizeof 运算符时会得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766385/

相关文章:

c++ - 使用返回 constexpr 对进行模板实例化

c - 显然我正在破坏堆栈——但是如何呢?

c - 真正的泄漏还是错误的分析仪报告?

c - 编写一个循环程序,从标准输入读取字符并将其十进制值写入标准输出(每行一个),直到 EOF 发生

c - 在 C 中初始化结构体数组

c++ -::std::initializer_list 与可变参数模板

c++ - 奇怪的段错误

javascript - 你如何发送一个数组作为(jquery)ajax请求的一部分

javascript - 使用 Array.map 作为 foreach 是一个好的做法吗?

c++ - 运行简单的单线程 C++ 程序时,是否可以消除 Linux 机器的抖动?