linux内核变参,linux系统下printf函数可变参数的计算顺序

#include

void main()

{

int i=5;

//printf("%d,%d,\n",i,i++); //输出 6,5,

//printf("%d,%d,\n",i++,i); //输出 6,6,

//printf("%d,%d,\n",i,++i); //输出 6,6,

//printf("%d,%d,\n",++i,i); //输出 6,6,

//printf("%d,%d,\n",i++,++i); //输出 6,7,

//printf("%d,%d,\n",++i,i++); //输出 7,5,

//printf("%d,%d,\n",i++,i++); //输出 6,5,

//printf("%d,%d,\n",++i,++i); //输出 7,7,

//由此得出:可变参数是从右到左计算的,并且后自增(i++)是先将i当前值保存,然后自增,接着继续处理左边的参数。而i和i前自增是先计算。计算结束后依次入栈,因此后自增打印出来的是i在从右向左计算过程中当前的I值,而i,++i最终输出的都是I的最终值。

因此:

//printf("%d,%d,%d,%d,\n",++i,i++,++i,i); //输出 8,6,8,8,

//printf("%d,%d,%d,%d,\n",++i,++i,++i,++i); //输出 9,9,9,9,

//printf("%d,%d,%d,%d,\n",i++,i++,i++,i++); //输出 8,7,6,5,

//printf("%d,%d,%d,%d,%d,\n",i++,++i,i,++i,i++); 8,9,9,9,5,

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值