Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
foolspeed93
1 / 1 / 0
Регистрация: 10.04.2012
Сообщений: 34
#1

Оператор запятая - C++

27.07.2015, 16:02. Просмотров 244. Ответов 5
Метки нет (Все метки)

int I, j;
j=10;
i = (j++, j+100, 999+j);
почему выведет 1010 а не 1110?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2015, 16:02     Оператор запятая
Посмотрите здесь:

C++ Найти позицию (номер символа), в которой находится первая запятая
знак для Float (точка и запятая) проблема C++
C++ Вывести на экран слова перед которыми стоят запятая и пробел.
C++ Длинно-плавающая запятая
C++ Что? (оператор "," (запятая))
Дана строка символов. Выяснить имеются ли в данной строке рядом стоящие запятая и тире C++
Запятая в операторе scanf C++
Плавающая запятая C++
Особенонсти перегрузки оператора запятая C++
C++ Оператор запятая в return и задача
Как это работает (недокументированное использование оператора "запятая")? C++
Нюансы использования оператора запятая или что такое UB и с чем его едят C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
2063 / 1570 / 301
Регистрация: 15.12.2013
Сообщений: 6,204
27.07.2015, 16:11     Оператор запятая #2
foolspeed93, потому что 999+11 = 1010.
ture
 Аватар для ture
430 / 323 / 121
Регистрация: 27.11.2014
Сообщений: 1,027
27.07.2015, 16:25     Оператор запятая #3
Оператор "," имеет самый низкий приоритет, имеет левый и правый операнд, левый вычисляется первым, а возвращается результатом второй.
(j++, j+100, 999+j)
1) j++
2) j+100
3) 999+j

http://iproc.ru/programming/cpp-comma-operator/
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
27.07.2015, 16:35     Оператор запятая #4
j+100 <--- тут значение j не изменяется.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6346 / 2993 / 295
Регистрация: 04.12.2011
Сообщений: 8,029
Записей в блоге: 3
27.07.2015, 17:21     Оператор запятая #5
Цитата Сообщение от castaway Посмотреть сообщение
тут значение j не изменяется
похоже, что там выводится i. То есть если бы i= (j++, 999+j, j+100);
то вывелось бы 111.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
27.07.2015, 17:29     Оператор запятая #6
Цитата Сообщение от IGPIGP Посмотреть сообщение
похоже, что там выводится i.
Всё верно, там выводится i. Я это и имел в виду.
C++
1
i = (j++, j+100, 999+j);
Данное выражение можно переписать так:
C++
1
2
3
j++;
j+100; // переменная j не меняется
i = 999+j;
Yandex
Объявления
27.07.2015, 17:29     Оператор запятая
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru