C++关于++的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:52:18
#include "stdafx.h"
#include<iostream>
using namespace std;

int _tmain(int argc, _TCHAR*argv[])
{
int sum = 0, val = 1;
while(val<=10)
{
sum+=val;
val++;//此处的val++改为++val竟然不影响结果,先自
加后运算不会影响结果么?没想明白。
}

std::cout<<"sum of 1 to 10 inclusive is "
<<sum<<std::endl;
return 0;
}

那当然不影响结果。因为不管是Val++还是++Val都是把Val的值加了1,不同的是,前者是先返回Val的值再++,后者是先++再返回值。但你又没有把它的值取到,所以两者没有什么区别。如果你改成这样
int _tmain(int argc, _TCHAR*argv[])
{
int sum = 0, val = 1;
int result=0;
while(val<=10)
{
sum+=val;
result=val++;//此处的val++改为++val竟然不影响结果,先自
加后运算不会影响结果么?没想明白。
}

std::cout<<"sum of 1 to 10 inclusive is "
<<sum<<std::endl;
std::cout<<result
return 0;
}

你就会发现两个result不同了。

前后自加只对当前行的代码有影响

int i = 0;
cout << i++; //0
cout << i; //1
i = 0;
cout << ++i; //1
cout << i; //1

如果单行代码只执行了自加,那么前后自加在结果上没有差别