当我应用sizeof运算符时,为什么会得到不同的结果?

use*_*619 20 c c++ arrays sizeof

我有这个程序

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

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

Pra*_*rav 34

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

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