mhj1995 发表于 2021-8-5 21:29:32

有哪位大佬可以解惑吗

#include <stdio.h>

int main()
{
      char ch = "FishC";
      int i;

      printf("请输入你想访问的字符序号(0~5):");
      scanf("%d", &i);

      if (!(i >= 0 && i <= 5 && printf("%c\n", ch)))
      {
                printf("非法访问!\n");
      }

      return 0;
}

小甲鱼写的这段话我有点看不懂if (!(i >= 0 && i <= 5 && printf("%c\n", ch))),为什么printf("%c\n", ch)可以加在逻辑式后面,是因为它不为0所以逻辑值为1吗。既然它是if()里的表达式,为什么还可以打印出来。后面输出
printf("非法访问!\n");我知道是因为短路逻辑的原因。我不明白为什么if()表达式里的判断语句可以打印出来。

大马强 发表于 2021-8-5 21:38:36

可能这就是规定吧,说明printf当作if 逻辑判断一部分时printf语句会正常执行

大马强 发表于 2021-8-5 21:41:17

https://static01.imgkr.com/temp/0066e75ebfed42969b3452137de1202e.jpg
就像这样,我猜printf执行后返回 Ture

大马强 发表于 2021-8-5 21:41:58

https://static01.imgkr.com/temp/0066e75ebfed42969b3452137de1202e.jpg

mhj1995 发表于 2021-8-5 21:54:40

谢谢大哥,不纠结这些了

大马强 发表于 2021-8-5 22:00:05

mhj1995 发表于 2021-8-5 21:54
谢谢大哥,不纠结这些了

哈哈哈,那句话说得好啊"认真你就输了",不用太纠结{:10_281:}
页: [1]
查看完整版本: 有哪位大佬可以解惑吗