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