sizeof принимает два аргумента

В C.1.3 C ++ IS (2003. Это также и в C ++ 11 IS) стандартные точки выявить разницу между ISO C и C ++; а именно, для

char arr[100];

sizeof (0, arr) возвращает sizeof (char *) в C, но 100 в C ++.

Я не могу найти документации для sizeof принимает два аргумента. Очевидным резервным вариантом является оператор запятой, но я так не думаю: sizeof (arr) в C равно 100 ; sizeof (0, arr) равно sizeof (char *) . Оба sizeof (0, arr) и sizeof (arr) равны 100 в C ++.

Мне может не хватать всей сути IS в этом контекст. Кто-нибудь может помочь? Это похоже на вопрос, который обсуждался еще в '09, но никто не упомянул IS, и я не думаю, что был дан правильный ответ.


Править : На самом деле IS говорит об операторе запятой . Итак, по какой-то причине (0, arr) возвращает char * в C, но char [100] в C ++. Почему?

37
задан Nawaz 2 August 2011 в 09:19
поделиться