zagadka - postinkrementacja
Ostatnio zmodyfikowano 2018-04-03 00:43
aksen Temat założony przez niniejszego użytkownika |
zagadka - postinkrementacja » 2018-04-02 22:24:45 #include<iostream>
int main() { int x = 1; x = x++; std::cout << x << std::endl; x = x++ + x; std::cout << x << std::endl; return 0; }
proste pytanie: dlaczego w przypadku nr1 na konsoli dostajemy 1, a w przypadku nr2 już 3 (a nie 2)? |
|
Monika90 |
» 2018-04-02 22:40:18 Twój program ma błąd składni, bo zapomniałeś napisać int przed main. |
|
pekfos |
» 2018-04-02 22:44:19 |
|
YooSy |
» 2018-04-02 22:45:57 dlaczego w przypadku nr1 na konsoli dostajemy 1 |
Równie dobrze może to być dwa. edit: Jak podrzucił @pekfos. |
|
Monika90 |
» 2018-04-02 22:52:30 int x = 1; x = x++; std::cout << x << std::endl;
Wg mnie to powinno wypisać 1. Natomiast to drugie ma niezdefiniowane zachowanie. |
|
YooSy |
» 2018-04-02 23:20:45 Wg mnie to powinno wypisać 1 |
Powinno, a nie wszędzie tak robi. VS wypisuje 2, a gcc wypisuje 1. |
|
pekfos |
» 2018-04-02 23:27:06 W postinkrementacji, inkrementacja jest po (sequenced after) obliczeniu wartości. W przypisaniu, przypisanie jest po obliczeniu wartości operandów. Nie jest określone, czy inkrementacja ma zajść przed, czy po przypisaniu. |
|
Monika90 |
» 2018-04-03 00:03:01 |
|
« 1 » 2 |