#include<iostream>
using namespace std;
int main()
{
int x = 0;
if (!x++)cout<<"if判断时x没有自增"; //先判断后自增,。如果是 if (!++x)则是先自增后判断
else cout<<"if判断时就先自增了";
cout<<endl;
cout<<x; //,这里输出的是自增后的x=1;
return 0;
using namespace std;
int main()
{
int x = 0;
if (!x++)cout<<"if判断时x没有自增"; //先判断后自增,。如果是 if (!++x)则是先自增后判断
else cout<<"if判断时就先自增了";
cout<<endl;
cout<<x; //,这里输出的是自增后的x=1;
return 0;
}
单目运算符是从右向左,所以先++后!(两个优先级相同),但是后置运算符(++)的求值结果是运算对象改变之前的那个值的副本 ,参考《c++ primer》第五版P131
------------------------
[中国著名网络公司XL公司面试题]下面两段代码的输出结果分别是什么?
代码A:
#include<iostream>
using namespace std;
main()
{
int a,x;
for(a=0,x=0;a<=1&&!x++;a++)
{
a++;
}
cout<<a<<x<<endl;}
代码B:
#include<iostream
>using namespace std;
main()
{
int a,x;
for(a=0,x=0;a<=1&&!x++;)
{
a++;
}
cout<<a<<x<<endl;}
答案:21 12
转载地址:http://blog.163.com/niwei_258/blog/static/106284882010911105512558/