printf函数对参数的计算顺序,是从右往左的

您所在的位置:网站首页 打印顺序从左到右怎么设置 printf函数对参数的计算顺序,是从右往左的

printf函数对参数的计算顺序,是从右往左的

2024-03-21 12:31| 来源: 网络整理| 查看: 265

例:

#include void main() { int i=2; printf("%d,%d,%d,%d,\n",i++,++i,i,i++); printf("%d\n",i); }

首先,应该说明的是在不同的编译环境中结果是不一样的。  关于本段代码在VC++6.0中的规则如下:  1、printf函数的执行顺序是由右到左的  2、前自增运算符(++i)先加1,再使用i,此时i已经加了1;  3、后自增运算符(i++)先使用i,再加1,***注意这里是关键所在,VC++6.0后自增运算是要在整条语句结束以后才自加1的! 所以:  printf("%d,%d,%d,%d,\n",i++,++i,i,i++);  从右往左运算:  i++得到2(i=2,后加1在整条语句执行完才进行,这里先记下)  i还是2 (i=2,原因见上一行)  ++i得到3(i=3,先加1,后使用)  i++得到3(i=3,后加1在整条语句执行完才进行,这里先记下)  所以输出结果为:3,3,2,2  然后计算刚才的两次后自增运算后,i=5  printf("%d\n",i);  所以,结果是5

-----------------------------------------------------------------------------------

关于下面的程序:

#include void main() { int a=5,b=2; printf("%d %d\n",b=a+1,a=a+1); }

输出结果是:7 6 而不是:6 6

这是因为printf函数的计算是从右向左进行的。

另外关于下面程序的解释: int i=7; printf("%d\n", i++ * i++);  输出结果是:49而不是56 int i=7;printf("%d %d\n",++i,i++); 输出结果是:8 7而不是9,7 这并不违背分割新上面关于printf函数从右向左计算的原因。

总结:到这里,要掌握的是两点,

一是:printf函数中的计算是从右向左进行的。

二是:我们在写代码时,应该尽量避免类似下面的无确定意义的表达式出现,因为很有可能不同的编译器,会采用不同的理解方式。 例如:

a+=a++; a[i]=i++; printf("%d %d\n",++i,i++);



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3