В 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 ++. Почему?