Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интересный способ инициализации 
:(
    Опции темы
SABROG
Дата 1.3.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Случайно наткнулся на одном форуме на такую штуку

Код

unsigned int tst = (1, 2, 3, 4);


Вопрос на проверку знаний C++. Не компилируя код, попробуйте ответить на следующие вопросы:
- скомпилируется ли это? будут ли warning'и?
- какое значение примет tst?
- как подобную запись можно трактовать с точки зрения компилятора. Т.е. объяснить происходящее.

З.Ы.: это не тест, не задачка и не лабораторная. Вопрос для тех кому просто интересно поразмышлять smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Alexiski
Дата 1.3.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 12.12.2008

Репутация: нет
Всего: 1



Сначала показалось, что скобки - фигурные. Ответ тогда резко другой..
PM MAIL   Вверх
mes
Дата 1.3.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  1.3.2009,  15:32 Найти цитируемый пост)
- как подобную запись можно трактовать с точки зрения компилятора. Т.е. объяснить происходящее.

Советую Вам почитать про оператор "," и ответы на все три вопроса станут очевидными.  smile 


--------------------
PM MAIL WWW   Вверх
nmn
Дата 1.3.2009, 16:45 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: нет
Всего: 1



будет 4
PM Skype   Вверх
SABROG
Дата 1.3.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  1.3.2009,  16:42 Найти цитируемый пост)
Советую Вам почитать про оператор "," и ответы на все три вопроса станут очевидными.

Да мне и так очевидно smile Просто сама странность подобной записи может натолкнуть на неправильные выводы.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 1.3.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



В данном контексте - нет никакого смысла в такой записи smile И ещё - вопрос начёт варнингов неккоректен. Ибо компилерозависимо.


--------------------
PM MAIL ICQ Skype   Вверх
mes
Дата 1.3.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(SABROG @  1.3.2009,  15:50 Найти цитируемый пост)

Да мне и так очевидно smile 

тогда мне непонятно название темы...  инициализация тут (по отношению к результату содержимого скобок) не при чем.



--------------------
PM MAIL WWW   Вверх
SABROG
Дата 1.3.2009, 17:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @ 1.3.2009,  17:02)
Цитата(SABROG @  1.3.2009,  15:50 Найти цитируемый пост)

Да мне и так очевидно smile 

тогда мне непонятно название темы...  инициализация тут (по отношению к результату содержимого скобок) не при чем.

Мне ничего более умного в голову не пришло. А интересен этот способ инициализации тем, что можно пустить человека по ложному следу, когда он начнет разбираться в чужих исходниках. Это конечно, если новичек. Мало ли зачем может пригодиться. Для тестов в универе и т.п.

Ну так не интересно, опять гуру повылазили и обсуждают некорректность сего задания. smile


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Torsten
Дата 2.3.2009, 12:11 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 10.6.2008
Где: Pskov

Репутация: 3
Всего: 7



Я бы заминусовал за такой код smile
Это из разряда, смотрите какой я дятел, вот я написал, а вы нубы теперь думайте как тут и что.
Понты, тупые понты.
--------------------
We have no begining, we have no end. We are infinite.
PM MAIL   Вверх
SABROG
Дата 2.3.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(Torsten @ 2.3.2009,  12:11)
Я бы заминусовал за такой код smile
Это из разряда, смотрите какой я дятел, вот я написал, а вы нубы теперь думайте как тут и что.
Понты, тупые понты.

О как интересно. Меня обозвали дятлом и быком  smile  smile 

Никого обидеть не хотел, просто нашел интересную, видимо только для себя, фишку. Захотел поделиться.
Ладно, полезу-ка я туда откуда вылез  smile 


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
mes
Дата 2.3.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



 smile 
Цитата(SABROG @  2.3.2009,  11:21 Найти цитируемый пост)
Меня обозвали дятлом и быком

про дятла нашел, а вот про быка где ?! 
 smile 

Это сообщение отредактировал(а) mes - 2.3.2009, 13:06


--------------------
PM MAIL WWW   Вверх
zim22
Дата 2.3.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



насколько я помню, или у Саттера или Мейерса было что-то следующего:
Код
int x = 0, res = x;
    while (res < 100)
        x = 5,
        cout << x,
        ++x,
        res += x,
        
        cout << res,
        cout << endl;


а вообще ничего тут сложного нет. обычный оператор "запятая". Как он работает можно усвоить за 5 мин.
Цитирую: "Оператор запятая (comma expression) используется в случаях, где ряд выражений отделяется запятыми. Выражения обрабатываются слева направо. Результатом оператора запятая (,) является правый операнд. Если правый операнд является l-значением, результат также будет l-значением."

Его "фишка" в том, что выражения 100% будут выполняться слева направо.


--------------------
PM MAIL   Вверх
SABROG
Дата 2.3.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Цитата(mes @  2.3.2009,  13:06 Найти цитируемый пост)
про дятла нашел, а вот про быка где ?! 

Неудачно сравнил, хотел сказать, что быки понтуются, но они обычно бычат. Значит я фраер  smile 

Цитата(zim22 @  2.3.2009,  13:09 Найти цитируемый пост)
Результатом оператора запятая (,) является правый операнд. Если правый операнд является l-значением, результат также будет l-значением."

А вот это уже интересное применение. Похожую тему на RSDN нашел http://www.rsdn.ru/forum/message/1387684.flat.aspx#1387684

Это сообщение отредактировал(а) SABROG - 2.3.2009, 13:32


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
zim22
Дата 2.3.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(SABROG @  2.3.2009,  13:24 Найти цитируемый пост)
А вот это уже интересное применение.

угу. можно писать такой извращённый код:
Код

int x = 5, y = 7;
(5, x, x) = *&++*&--*&++*&--*&++*&--y;

 smile 


--------------------
PM MAIL   Вверх
SABROG
Дата 2.3.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Во, еще вопрос придумал. А теперь тот же код, но без скобок. Что будет в tst  smile ?
Код

unsigned int tst = 1, 2, 3, 4;



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 1.0234 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.