В C.1.3 С++ IS (2003. Он также в С++ 11 IS), стандарт указывает разницу между ISO C и С++; а именно для
char arr[100];
sizeof(0, arr)
возвращает sizeof(char*)
в C, но 100
в С++.
Я не могу найти документацию для sizeof
с двумя аргументами. Очевидным резервным является запятый оператор, но я так не думаю: sizeof(arr)
в C есть 100
; sizeof(0, arr)
- sizeof(char*)
. Оба sizeof(0, arr)
и sizeof(arr)
являются 100
в С++.
В этом контексте может отсутствовать вся суть IS. Может ли кто-нибудь помочь? Это похоже на вопрос, обсуждавшийся еще в '09, но никто не ссылался на ИС, и я не думаю, что был дан правильный ответ.
Изменить. На самом деле IS говорит о запятой. Поэтому по какой-то причине (0, arr)
возвращает a char*
в C, но a char[100]
в С++. Почему?