реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Это я неправ или ИАР неправильно работает?
shindarah
сообщение Mar 8 2005, 10:05
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 23
Регистрация: 28-02-05
Пользователь №: 2 946



Короче я не понял...
Пишу следующий код:

if((i++)>=3){что-то сделать...}

и пишу
i++;
if(i>=3){что-то сделать...}

Работает по разному...

В первом случае сначала сравнивает, потом увеличивает i
Во втором сначала соответственно увеличивает i, потом сравнивает...

Я не вижу разницы в записи... там ведь скобки стоят - у них приоритет должен быть больше, чем у сравнения...

Может я что не понимаю? huh.gif
Go to the top of the page
 
+Quote Post
ig_z
сообщение Mar 8 2005, 13:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



Цитата(shindarah @ Mar 8 2005, 13:05)
Короче я не понял...
Пишу следующий код:

if((i++)>=3){что-то сделать...}

и пишу
i++;
if(i>=3){что-то сделать...}

Работает по разному...

В первом случае сначала сравнивает, потом увеличивает i
Во втором сначала соответственно увеличивает i, потом сравнивает...

Я не вижу разницы в записи... там ведь скобки стоят - у них приоритет должен быть больше, чем у сравнения...

Может я что не понимаю?  huh.gif
*



Точно, не понимаешь. Все достаточно ясно описано в стандарте - пост и пре, инкремент и декремент.

В первом случае компилер обязан взять значение переменной и выполнить действие (в данном случае сравнение), а затем инкрементировать ее значение.

Первый равен второму
if((++i)>=3){что-то сделать...}

Второй равен первому
if(i>=3){что-то сделать...}
i++;// ++i;
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016