使用C ++中的递增运算符得不到正确的结果

时间:2017-03-26 11:58:10

标签: c++

我在C ++中使用前缀n后缀中的增量运算符,但是我得到了不正确的结果,任何人都可以指导我告诉我我做错了什么:)谢谢:) 这是我的代码:)

 #include <iostream>
 using namespace std;
 int main()
 {
 int a=0;
 cout<<a++<<endl<<++a<<endl;
 }

期待结果

 0
 2

但我得到了结果

 1 
 2

1 个答案:

答案 0 :(得分:0)

这与增量operator++及其运作方式有关,具体取决于您将其用作前缀还是后缀

 #include <iostream>

 int main() {
    int a = 0;
    std::cout  <<  a++  << std::endl 
    // Output: 0. ++ as posfix creates an incremented copy of "a" and AFTER the line gets executed.
    std::cout  <<  ++a  << std::endl; 
    // Output: 1. ++ as prefix creates a copy of "a", an incremented copy BEFORE the line gets executed. 

    std::cout << a++ << std::endl << ++a << std::endl;
    // Output: 0
    //         1. 
    // "a" get incremented only by the prefix operator++
 }

注意:更改using namespace stdrecommend您使用命名空间+范围运算符,例如std::用于C ++标准库容器。