Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не понимаю почему программа выводит 1

Лена Козырева Ученик (114), на голосовании 2 месяца назад
 #include

int main() {
int n = sizeof(0)["abcdefg"];
std::cout << n;
}
Голосование за лучший ответ
Иван Сигаев Искусственный Интеллект (154173) 3 месяца назад
Потому что по приоритетам
Сначала вычисляется
(0)["abcdefghij"] => 'a'
А потом выдается результат "размера" char => 1
Батаев ДмитрийПросветленный (22920) 3 месяца назад
к тому такая конструкция по-моему нафиг не нужна. Кто её придумал и зачем?
Иван Сигаев Искусственный Интеллект (154173) Ну в таком варианте дейcтвительно не нужна, а как насчет size_t hex_to_char=12; cout<<(hex_to_char)["0123456789ABCDEF"];
СергейГений (59759) 3 месяца назад
Если про финт указатель[индекс] = индекс[указатель] я знал, то вот про sizeof всегда думал как про функцию а не про оператор который не нуждается в скобках!
Иван Сигаев Искусственный Интеллект (154173) По стандарту sizeof - оператор, но у него есть два варианта "использования" sizeof( type ) - без скобок будет синтаксическая ошибка и sizeof expression - скобки не требуются в данном случае используется второй вариант
Похожие вопросы