In C.1.3 of the C++ IS (2003. It's in the C++11 IS, too), the standard points out a difference between ISO C and C++; namely, for
char arr[100];
sizeof(0, arr)
returns sizeof(char*)
in C, but 100
in C++.
I can find no documentation for sizeof
taking two arguments. The obvious fallback is the comma operator, but I don't think so: sizeof(arr)
in C is 100
; sizeof(0, arr)
is sizeof(char*)
. Both sizeof(0, arr)
and sizeof(arr)
are 100
in C++.
I may be missing the whole point of the IS in this context. Can anyone help? This is similar to a question discussed back in '09, but no one referred to the IS, and I don't think the correct answer was given.
Edit: Actually, the IS is talking about the comma operator. So, for some reason (0, arr)
returns a char*
in C, but a char[100]
in C++. Why?
question from:
https://stackoverflow.com/questions/6331588/sizeof-taking-two-arguments 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…