一道题(x=a>b++?a++:b++)背后的前后自增问题

 关于一道题a=3,b=2,x=a>b++?a++:b++求x,a,b的值

#include<stdio.h>
int main() 
{
	int a=3,b=2,x;
	x=a>b++?a++:b++;
	printf("x=%d,a=%d,b=%d",x,a,b);
	return 0;
}

结果为a=4,x=3,b=3;

前置自增a++是a先参与计算后加1

例如i=a++,a=1,输出的值a=2,i=1

后置自增a++是a先加1后参与计算

例如i=a++,a=1,输出的值a=2,i=2

回到题目中先判断a>b++是否为真,因为a=3>b=2(但b后面加了1,b=3)为真,x=a++=3,a后面也要加1,a=4

也可以用下列代码检验

    int a=3,b=2,x;
	int temp_x=a>b++;
	printf("temp_x=%d\n",temp_x);
	printf("b=%d",b);

结果为:b=3,temp_x=1(为真)
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值