Форум программистов CodeGuru
21 Июль 2018, 03:51:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: что за оно?  (Прочитано 20862 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kirill0072
Пользователь
***
Офлайн Офлайн

Сообщений: 44


Просмотр профиля
« : 29 Июль 2008, 23:59:56 »

знаю есть инкремент o_perem++ и декремент o_perem-- но что такое  --o_perem или     ++o_perem
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 30 Июль 2008, 22:22:33 »

Гм... а о каком языке хоть речь то ? Улыбка

А вообще по теме.
Цитировать
знаю есть инкремент o_perem++ и декремент o_perem--

Немного не так.

Во многих языках программирования выделяют понятие операции (операция) и, соответственно, такие синтаксические конструкции этих языков программирования как операторы (оператор).
В некоторых языках программирования (например, C, C++, JavaScript), существуют операции:
 - инкремента (инкремент)
 - декремента (декремент)
И, соответственно, операторы:
 - инкремента: ++
 - декремента: --

Также... выделяют понятия префиксных и постфиксных операций.
Использование префиксных операций в выражениях приводит сначала к их выполнению, а потом - вычислению выражения.
Если использована постфиксная операция, то сначала вычисляется выражение, потом выполняется операция.
Примечательно, что в таких языках как C, C++, JavaScript, операции инкремента и декремента могут быть как префиксными, так и постфиксными (вобщем, в C/C++ это единственные операции (кажется), которые так себя ведут).

Так вот...
Объясню на пальцах. Если используем инкремент или декремент в префиксной форме в выражении, то сначала "сработает" операция, потом вычислится выражение. Например, после исполнения кода:

Код:
int a = 1;
int b = ++a + 1;

переменная a будет равна 2, а переменная b равна 3.
Т.е. сначала переменная a была увеличена на 1 (и стала равна 2), а потом к этому значению было прибавлено 1.

А после исполнения кода:

Код:
int a = 1;
int b = a++ + 1;

Или же даже:
Код:
int a = 1;
int b = a+++1;

Улыбка

обе переменные a и b будут равны 2.
Т.е. сначала к значению a (1) прибавится 1 (это и будет значением выражения и операндом операции присваивания), а потом переменная a увеличится на 1.
Записан

c-coder
Пользователь
***
Офлайн Офлайн

Сообщений: 110


Просмотр профиля
« Ответ #2 : 30 Июль 2008, 23:10:45 »

3V здорово все расписал. Я бы так не смог  Пеффко !

Прикольно смотрится это:
Код:
int b = a+++1;

Цитировать
знаю есть инкремент o_perem++ и декремент o_perem--

Это называют постинкремент и постдекремент также Улыбка
Записан
kirill0072
Пользователь
***
Офлайн Офлайн

Сообщений: 44


Просмотр профиля
« Ответ #3 : 01 Август 2008, 22:32:12 »

а как это будет выглядеть в операторе if()?
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #4 : 02 Август 2008, 16:36:27 »

а как это будет выглядеть в операторе if()?

Что конкретно ? Инкремент и декремент ?
Так и будет выглядеть:

Код:
if(a++)
{
    // что-то

Тут-то, кстати, как раз и проявляются особенности пре- и пост- операций (конкретно инкремента и декремента).

Т.е. в общем случае,

Код:
if(a++)

совсем не одно и то же, что

Код:
if(++a)

Записан

Snowcore
Интересующийся
**
Офлайн Офлайн

Сообщений: 18



Просмотр профиля WWW
« Ответ #5 : 19 Сентябрь 2008, 19:12:04 »

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

3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #6 : 19 Сентябрь 2008, 21:36:27 »

дайте более подробное описание
Еп, те подробное описание чего ?
Записан

holdmann
Пользователь
***
Офлайн Офлайн

Сообщений: 262



Просмотр профиля
« Ответ #7 : 19 Сентябрь 2008, 21:42:01 »

куда еще подробнее то?!

операторы увеличения и уменьшения (инкремент декримент):
инкремент -  "++": i++ эквивалентно i=i+1
декримент - "--": i-- эквивалентно i=i-1

эти операторы являются унарными, причем положение может быть как слева так и справа.
отличия в положениях можно посмотреть на примере кода:

Код:
var a=1;
var b=1;


с = a++ + 2; // результат: c == 3, a == 2
d = ++b + 2; // результат: d == 4, b == 1
т.е. положение оператора влияет на порядок действий, в первом случае (с), сначала выполняется сложение переменной a и 2, а только потом выполняется увеличение переменной a.
А во втором случае (d), сначала выполняется увеличение переменной b, а только потом сложение переменной b и 2.
Исходя из чего и получаем разные ответы. Смущение
Записан

Елси вы хотите купить, продать, отремонтировать автомобиль в Ижевске: Вам сюда =)
(c)holdmann
holdmann
Пользователь
***
Офлайн Офлайн

Сообщений: 262



Просмотр профиля
« Ответ #8 : 19 Сентябрь 2008, 21:54:59 »

b == 2 *****
Записан

Елси вы хотите купить, продать, отремонтировать автомобиль в Ижевске: Вам сюда =)
(c)holdmann
Atilo
Новичок
*
Офлайн Офлайн

Сообщений: 4


Просмотр профиля
« Ответ #9 : 24 Сентябрь 2008, 00:02:19 »

2 kirill0072
Курите вики: инкремент.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!