这个程序最后输出时多少,为什么,请详细解释一下if后面括号中是什么意思,特别是那三个符号。
main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d",a,b);elseprintf("%d%d",b,a);...
main()
{
int a=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d%d",a,b);
else
printf("%d%d",b,a);
return 0;
} if((++a<0)&&!(b--<=0))
这个程序最后输出时多少,为什么,请详细解释一下if后面括号中是什么意思,特别是那三个符号。 展开
{
int a=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d%d",a,b);
else
printf("%d%d",b,a);
return 0;
} if((++a<0)&&!(b--<=0))
这个程序最后输出时多少,为什么,请详细解释一下if后面括号中是什么意思,特别是那三个符号。 展开
1个回答
展开全部
你好,结果是1 0
程序是这样执行的:在main函数中,首先声明三个整型变量a, b, k(但不知k是干嘛的)。
然后一个if判断, && 表示前后两个条件都成立时,执行if后的语句, ++a和b-- 的区别很简单,楼主可以自己查阅资料,首先++a < 0在这里等价于0 < 0显然是不成立的,然后这里就是重点,对于编译器来说,判断 &&类型的条件语句时,如果第一个表达式就为假(这里指a < 0)那么就没必要再判断后面的表达式的真假,所以 !(b-- <= 0)不会被判断真假,b--也不会被执行。那么就清楚了,else 后的语句会被执行,这时的状态是 a = 0, b = 1。所以输出是1 0。
程序是这样执行的:在main函数中,首先声明三个整型变量a, b, k(但不知k是干嘛的)。
然后一个if判断, && 表示前后两个条件都成立时,执行if后的语句, ++a和b-- 的区别很简单,楼主可以自己查阅资料,首先++a < 0在这里等价于0 < 0显然是不成立的,然后这里就是重点,对于编译器来说,判断 &&类型的条件语句时,如果第一个表达式就为假(这里指a < 0)那么就没必要再判断后面的表达式的真假,所以 !(b-- <= 0)不会被判断真假,b--也不会被执行。那么就清楚了,else 后的语句会被执行,这时的状态是 a = 0, b = 1。所以输出是1 0。
追问
那请问 !(b-- <= 0)这个又是什么意思呢?(前面这个感叹干嘛用的)
追答
如果a为真,那么!a就是假,!(b-- 是互斥的,所以!(b-- 0)是等价的,而且后者更加易懂,更加简洁。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询