我有这个程序

#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

09-09 23:16
查看更多