关于C ++中的逗号运算符

时间:2015-05-05 12:04:28

标签: c++

我一直在使用VS 2013社区学习C ++入门。 当我测试以下两个程序时。我很困惑因为我认为输出应该是同样的东西。为什么结果不同? 第一个如下。

#include "stdafx.h"
#include<iostream>
#include<vector>

using std::vector;
using std::cout;
using std::cin;
using std::endl;
int main()
{
    vector<int> ivec(10,0);
    vector<int>::size_type cnt =ivec.size();
    for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix)
    {
        --cnt;
        ivec[ix] = cnt;
        cout << ivec[ix] <<" "<<cnt<< endl;
    }

    return 0;
}

第二个程序如下。

#include "stdafx.h"
#include<iostream>
#include<vector>

using std::vector;
using std::cout;
using std::cin;
using std::endl;
int main()
{
    vector<int> ivec(10,0);
    vector<int>::size_type cnt =ivec.size();
    for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix, --cnt)
    {
        ivec[ix] = cnt;
        cout << ivec[ix] <<" "<<cnt<< endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:7)

一样的for循环
for (a; b; c)
{
    d;
}

等同于以下

a;
while (b)
{
    d;
    c;
}

那么c部分中发生的事情是在循环体完成后完成的。

在第二种情况下,{/ 1}}表达式在之后发生,而在第一种情况下,--cnt之前发生