Я изучаю 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;
}
Для 'for (a; b; c;) {d; } ', * когда * выполняются' '' '' '' '' '' '' '' '' '' '' '' '' '' '? – Biffen
Третье выражение в цикле 'for' не выполняется до тех пор, пока не будет выполнено тело цикла' for', в отличие от вашего первого примера, поэтому '--cnt' не выполняется до тех пор, пока тело не будет выполнено. – EdChum