13.03.2013, 23:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Сообщение от Boba_spb
|
Ну так все так и должно быть
|
Вы не поняли всей прелести ситуации - приоритет операций тут абсолютно ни при чем, неопределенным является порядок интерпретации записи вида " i+++i". Вторая и третья строки в примере приведены вовсе не для того, чтобы сосчитать до семи и восьми, соответственно, а для того, чтобы показать, что: - из двух равноправных способов интерпретации выражения данный компилятор выбрал второй (а другой компилятор имеет право выбрать первый),
- данный компилятор осуществил преинкремент не тогда, когда это "предусмотрено текстом", а до начала вычисления значения выражения (чтобы дважды не доставать значение i), а другой компилятор мог бы сделать иначе и получить ту же семерку, что и в первых двух строках.
__________________
There's always more than one way to skin a cat.
|
|
|
|
13.03.2013, 23:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Да посмотрел я на трех компиляторах IAR овском, борландовском и гнутом - все близняшки - как в учебнике "++ выше приоритет чем у + слева направо" Строку то они парсят слева направо вот и ловят ++ а потом +.
|
|
|
|
13.03.2013, 23:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Сообщение от Boba_spb
|
Строку то они парсят слева направо
|
"Приоритет" определяет порядок исполнения, а не порядок распознавания парсером.
__________________
There's always more than one way to skin a cat.
|
|
|
|
14.03.2013, 00:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Ню ню - что значит тогда слева напрово ?
Придется позвонить знакомому - он на вычислительной математике универа студней учить программному ремеслу.
C# смотреть не интересно - его люди из борланда писали.
Хто там исчо у нас ? ваткомовский си глянуть.
Такс .. tempora, Ваша очередь тестить СИ.
Кстати, тесть - это тестер предыдущей версии жены !!!!
|
|
|
|
14.03.2013, 00:24
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Надо просто избегать таких вариантов написания ... В этом нет мастерства. Для компилятора не важно на одной строке будет написано выражение или на 5. Объём результирующего кода, в идеале, от этого не изменится, а наглядность и отлаживаемость будет лучше если разбить.
|
|
|
|
14.03.2013, 00:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Люблю советы !!! Особенно бесплатные !!!
|
|
|
|
14.03.2013, 00:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Сообщение от Boba_spb
|
Ню ню - что значит тогда слева направо?
|
Это значит, что операции из списка, составленного парсером, будут исполняться в том порядке, в котором они были найдены парсером в тексте. На порядок распознавания парсером это никак не распространяется. То есть, формального правила, обязывающего парсер в последовательности "+++" выделять сначала "++" а затем "+", в стандарте нет.
Сообщение от Boba_spb
|
Хто там исчо у нас ? ваткомовский си глянуть.
Такс .. tempora, Ваша очередь тестить СИ.
|
Ещё чего - вопросы стандарта языка я голосованием не решаю. Если Вам пришло в голову придумывать правила, которых нет в стандарте языка, основываясь на том, как и что Вы наблюдаете в компиляторах, имеющихся под рукой в данный момент, то это Ваш выбор, не более.
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 14.03.2013 в 00:39.
|
|
|
|
14.03.2013, 00:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Три из трех ведут себя одинаково в данной ситуации, хочется посмотреть на компилятор, который в данной ситуации поступит иначе.
|
|
|
|
14.03.2013, 00:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Сообщение от Boba_spb
|
Три из трех ...
|
Вот это и называется голосованием.
Я никому не запрещаю расставлять себе грабли и ходить между ними. Моё дело - предупредить, а объяснять потом заказчику "раньше всё нормально было" буду не я.
__________________
There's always more than one way to skin a cat.
|
|
|
|
14.03.2013, 01:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Пара непонятных моментов по языку СИ
Кстати, гнутый и иаровский СИ эту строчку ругнули слегка замечанием, а борланд молча скушал. Глянул в инете на эту забаву, говорят что бывают разные результаты от натройки оптимизаторов и исчо чего то там. Так что будем считать что мне просто повезло.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:20.
|
|