m0_65357015 2021-12-15 20:08 采纳率: 36.4%
浏览 28
已结题

关于#c语言#的问题,请各位专家解答!

#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呀

  • 写回答

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月15日