我有这个程序
#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/