在笔试的时候,问了这样一道选择题:
int main()
{
int x=1;
int y=2;
int z=3;
printf("%d,%d\n",x,y,z);
return 0;
}
有这样几个选项:
A. 1,2,3 B.1,2 C . 1 D.编译错误
答案是:B
当时虽然回答正确,但是总觉得对printf的输出很是模糊,仔细查阅了相关资料发现还是需要注意的!
先声明下,以下编译都是在VC++6.0中运行的结果:
先来看下面一段代码:
int main()
{
int x=1;
printf("%d,%d\n",++x,x++);
printf("%d\n",x);
return 0;
}结果是多少呢?
答案是:2,1
3
为什么呢?
要注意一点:因为printf函数的计算是从右向左进行的,而输出是从左向右进行的!
printf("%d,%d\n",++x,x++);
运算过程:
从右向左:
1. x++ 得到1(x=1,后加1在整条语句执行完才进行)
2. ++x 得到2(x=2,先加1,后使用)
printf先输出 2,1
最后计算一次后运算x=3
printf输出 3
如果还是不清楚,可以看下面的两个例子的输出结果:
int main()
{
int x=1;
printf("%d,%d\n",x,x++);
printf("%d\n",x);
return 0;
}输出结果:1,1
2
int main()
{
int x=1;
printf("%d,%d\n",x,++x);
printf("%d\n",x);
return 0;
}输出结果:2,2
2
本文探讨了C++中printf函数的输出特性,强调了其从右向左计算、从左向右输出的原则,并通过实例解释了可能产生的输出结果,帮助理解printf的使用细节。

1386

被折叠的 条评论
为什么被折叠?



