#include<stdio.h>
int main()
{
int a,b,k;a=-1,b=4;
k=(a++<0)&&!(b--<=0);
printf("%d %d %d",k,a,b);
return 0;
}
为什么输出的值是1 0 3呀
关于#c语言#的问题,请各位专家解答!
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
「已注销」 2021-12-15 20:25关注突然想起来挺久没复习C了......
一行一行来看
a刚开始被赋值为-1
b被赋值为4
a++<0中,a++不是++a,所以在计算<0时a的值并没有自增,也就是a的值还是-1,即a++<0就是 -1<0,结果是1
b--与a++同理,即4<=0,结果是0
而!则是将b--<=0的结果0变成了1
到现在就已经很清楚了, 1&&1的结果为true,也就是1
(&&的判断依据是x和y均为true,取值是true,否则取值是false)
k = 1
a因为自增过一次所以 a == 0
b因为自减过一次所以 b == 3本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录