разница конструкций
От: svinka  
Дата: 18.02.04 13:39
Оценка:
В чем разница между
n++
и
n+=1?
Спасибо...
Re: разница конструкций
От: Кодт Россия  
Дата: 18.02.04 13:44
Оценка:
Здравствуйте, svinka, Вы писали:

S>n++


пост-инкремент (результат: rvalue — старое значение)

S>n+=1?


пред-инкремент (результат: lvalue — ссылка на n, с уже обновлённым значением)

Кроме того, операторы могут быть перегружены...
Перекуём баги на фичи!
Re: разница конструкций
От: achp  
Дата: 18.02.04 13:46
Оценка:
Здравствуйте, svinka, Вы писали:

S>В чем разница между

S>n++
S>и
S>n+=1?
S>Спасибо...

Если n — это объект встроенного типа (например, int), то

а) результат выражения n++ является rvalue, а n += 1 — lvalue;
б) значением выражения n++ является значение, которое имел объект n до приращения, а значением выражения n += 1 является уже приращенное значение n.

Если n — это объект класса, то определенные для него функции operator++ и operator+= могут определять каждая свою семантику, без увязки друг с другом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.