superswagy2002 发表于 2021-8-15 10:53:12

有个看不懂的问题

这里面的if后面的我没看懂,我不知道为什么可以执行if后面的printf的内容,if后面的小括号不是只起判断的作用吗
#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;
}

Max472 发表于 2021-8-15 10:57:54

if 不就是把括号里的表达式进行判断,如果结果正确就把 1 返回给 if ,此时 if 判断正确,进行 if 程序段吗,
这些 视频里不都有吗,{:10_262:}

superswagy2002 发表于 2021-8-15 11:10:30

Max472 发表于 2021-8-15 10:57
if 不就是把括号里的表达式进行判断,如果结果正确就把 1 返回给 if ,此时 if 判断正确,进行 if 程序段吗 ...

但那个printf在括号的表达式里面啊

Max472 发表于 2021-8-15 11:15:54

superswagy2002 发表于 2021-8-15 11:10
但那个printf在括号的表达式里面啊

刚才没注意看{:10_262:}
这个会执行啊,就像
while ( i++ < n )
{
...
}
这个 i 会一直自增,直到不符合 判断语句,没有输出不代表它不执行啊,有输出他就输出了

张三ccccccc 发表于 2021-8-15 11:59:45

运算符的优先级和运算方向
>=,<=优先级高于&&
且都是自左向右,i满足时,
会从左向右依次执行。
i的值不符合时,直接跳出

jhq999 发表于 2021-8-15 12:52:51

printf
正确返回输出的字符总数,错误返回负值。

万千只cnm 发表于 2021-8-15 13:08:24

if 先执行表达式 得到结果再判断啊
页: [1]
查看完整版本: 有个看不懂的问题