alex-dogg
23-04-2013, 15:28
Есть выражения с инкремент
выражение 1:
int a = 2, c = 0;
c = (++a) +++a;
c = 6. ?
а = 4
--------------
выражение 2:
int a = 2, c = 0;
c = ++a+(++a);
c = 8. ?
a = 4.
-----------
Я не могу понять почему компилятор дает такой ответ. (Visual Studio 2005).
(вчера я прочитал в одной книге, что в С + + возможные ситуации когда инициализация и модификация переменной могут не со-падать во времени, и таких конструкций вообще нужно обходить стороной - возможно это и есть ответ на мой вопрос). но мне интересно почему так происходит?
выражение 1:
int a = 2, c = 0;
c = (++a) +++a;
c = 6. ?
а = 4
--------------
выражение 2:
int a = 2, c = 0;
c = ++a+(++a);
c = 8. ?
a = 4.
-----------
Я не могу понять почему компилятор дает такой ответ. (Visual Studio 2005).
(вчера я прочитал в одной книге, что в С + + возможные ситуации когда инициализация и модификация переменной могут не со-падать во времени, и таких конструкций вообще нужно обходить стороной - возможно это и есть ответ на мой вопрос). но мне интересно почему так происходит?