执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf(“
答案:3 悬赏:70 手机版
解决时间 2021-03-27 02:08
- 提问者网友:雪舞兮
- 2021-03-26 02:10
执行程序段int a=-1,b=4,k;k=(++a<0)&&!(b--<=0);printf(“
最佳答案
- 五星知识达人网友:酒者煙囻
- 2021-03-26 02:33
int a=-1,b=4,k;
k=(++a<0)&&!(b--<=0);
printf(“%d %d %d\n”,k,a,b);
分析:
首先,计算(++a<0)&&!(b--<=0),首先计算(++a<0),结果为0。所以不计算&&右边的表达式,&&支持短路功能
所以,输出结果为:004追问为什么先计算a的?判定a为假,所以就跳出了是吗?追答这是规则
运算符,注意两个方面,一个是优先级,另一个是结合性
&&是左结合
k=(++a<0)&&!(b--<=0);
printf(“%d %d %d\n”,k,a,b);
分析:
首先,计算(++a<0)&&!(b--<=0),首先计算(++a<0),结果为0。所以不计算&&右边的表达式,&&支持短路功能
所以,输出结果为:004追问为什么先计算a的?判定a为假,所以就跳出了是吗?追答这是规则
运算符,注意两个方面,一个是优先级,另一个是结合性
&&是左结合
全部回答
- 1楼网友:荒野風
- 2021-03-26 04:44
依次输出的是kab的值:
k的值是逻辑假的值,转换整数就是0
a 因为自增过,所以是0
b没有执行自减,因为++a<0不成立。追问不是在括号内吗为什么要先执行a才到b追答先判断前面一个括号里不是真,但是(++a<0)为假。
k的值是逻辑假的值,转换整数就是0
a 因为自增过,所以是0
b没有执行自减,因为++a<0不成立。追问不是在括号内吗为什么要先执行a才到b追答先判断前面一个括号里不是真,但是(++a<0)为假。
- 2楼网友:胯下狙击手
- 2021-03-26 04:12
#include
main()
{int a=-1,b=4,k;
k=(++a<0) && !(b--<=0);
printf("%d\t%d\t%d\n",k,a,b);
}追答k=0是因为它是逻辑表达式,只有0和1的答案
main()
{int a=-1,b=4,k;
k=(++a<0) && !(b--<=0);
printf("%d\t%d\t%d\n",k,a,b);
}追答k=0是因为它是逻辑表达式,只有0和1的答案
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯