Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Интересные и занимательные задачи по программированию > Вот головоломка ))


Автор: valentos 27.1.2008, 00:11
i = 5;

i = ++i + ++i;

Чему равно i?

Автор: source777 27.1.2008, 00:31
По стандарту = 13, а вообще может зависить от компилятора...  

Автор: Akina 27.1.2008, 00:57
Цитата(source777 @  27.1.2008,  01:31 Найти цитируемый пост)
По стандарту = 13

т.е. по стандарту выражение не может интерпретироваться как

i = ++i++ + i;

? приоритет пред-инкремента?

Автор: Kangaroo 27.1.2008, 01:11
Цитата(Akina @  26.1.2008,  23:57 Найти цитируемый пост)
? приоритет пред-инкремента? 

так там же пробелы.. полюбому будет пред-инкремент

Автор: Retro 27.1.2008, 11:42
Помоему эта задача уже была во всех разделах. Даже в C++, .NET и флейме. smile 
Все действительно зависит от компилятора.

Автор: inisider 27.1.2008, 14:51
Хмммм... а ответ вообще будет 14 !!!!!

Автор: Kangaroo 27.1.2008, 19:50
Цитата(inisider @  27.1.2008,  13:51 Найти цитируемый пост)
Хмммм... а ответ вообще будет 14 !!!!! 

А 14 там с какого боку? Это на каком языке?

Автор: Samotnik 27.1.2008, 20:24
IntelliJ IDEA 7.0.1  +   jdk1.6.0_03
Выдает  13      smile 

Автор: inisider 28.1.2008, 18:10
напишите на С и будет 14

Автор: source777 28.1.2008, 19:25
Цитата(inisider @  28.1.2008,  18:10 Найти цитируемый пост)
напишите на С и будет 14
не все компиляторы С достаточно хорошо знают С smile 

Автор: inisider 29.1.2008, 09:38
 smile 

Автор: Shaggie 29.1.2008, 10:21
UB

Автор: Mayk 29.1.2008, 10:26
Shaggie прав. В сишках по стандарту UB. И вообще так писать не следует даже если http://c2.com/cgi/wiki?JustAnotherProgrammingLanguage Specification ver 12.054 sp3 говорит что ответ = 19.

Автор: Aloha 29.1.2008, 17:34
http://bash.org.ru/quote/212679

Автор: Kangaroo 29.1.2008, 17:45
Aloha,  smile 


Цитата(Mayk @  29.1.2008,  09:26 Найти цитируемый пост)
Shaggie прав. В сишках по стандарту UB.

А что такое "по стандарту UB"?

Автор: Shaggie 30.1.2008, 10:29
Википедия про UB http://en.wikipedia.org/wiki/Undefined_behavior.

http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5, укороченный вариант.

Автор: Kangaroo 30.1.2008, 12:12
Цитата(Shaggie @  30.1.2008,  09:29 Найти цитируемый пост)
Википедия про UB по-английски.

Спасибо, теперь понял. 

Автор: BinWorm 30.1.2008, 21:44
хмм, gcc и вижуалка дают 14, intel cpp 13. По идее может быть и 12, но я не встречал =)

Автор: silversmith 23.3.2008, 02:24
Хе-хе... эта головоломка мусолилась уже сто раз в инете ))). Пресловутые Undefined behavior и sequence points )))).
Еще одна статейка в тему:
http://en.wikipedia.org/wiki/Sequence_point

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)