我爱橙 发表于 2022-2-22 18:47:28

NO.15逻辑题求助

本帖最后由 我爱橙 于 2022-2-25 10:18 编辑

#include <stdio.h>

int main()
{
      int x = 1,y = 1;
      

      printf("结果是:%d\n", (!x||y--));

      return 0;
}

照抄还改了好几次错误后终于成功了,但还是不理解为什么结果是1,不是0或0吗?

isdkz 发表于 2022-2-22 18:50:03

0 或 1 就是 1 呀,y-- 是先使用 y 的值再自减的,--y 就是先自减再使用

我爱橙 发表于 2022-2-23 13:33:57

isdkz 发表于 2022-2-22 18:50
0 或 1 就是 1 呀,y-- 是先使用 y 的值再自减的,--y 就是先自减再使用

先使用再自减就只执行第一步使用吗?那为什么有时候输出结果是执行两步后的自减值呀?

isdkz 发表于 2022-2-23 13:39:49

我爱橙 发表于 2022-2-23 13:33
先使用再自减就只执行第一步使用吗?那为什么有时候输出结果是执行两步后的自减值呀?

不管是 --i 还是 i--都会自减,

如果是单独使用,也就是单纯用来自减,这两个并没有区别,

但是如果要代入表达式,--i 会先自减再把 i 的值代入表达式中,而 i-- 是先把 i 的值代入表达式后再自减
页: [1]
查看完整版本: NO.15逻辑题求助