SmoothCriminal 发表于 2021-5-26 10:49:57

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;
}

————————————————
IF语句里的!为啥这么用?我把IF后面的!删掉后程序好像还是可以正常执行。有没有大佬可以给我解下惑,感谢感谢。

wp231957 发表于 2021-5-26 10:59:49

没啥太大意义,就是炫(显摆)而已

王之叹息 发表于 2021-5-26 11:09:18

if()里的应该用了“短路”的知识就是说例如(a=0)&&(a=3);运行完这个语句后a还是等于0因为运行完a=0后,整个语句的值就一定为假也就是0了(你应该知道&&的作用吧),所以a=3这个表达式就不会继续执行了。你可以根据我说的先独立思考下,如果还不明白我可以直接在你本来的程序上讲下。
最后,如果满意的话给个最佳啊亲{:5_104:}

王之叹息 发表于 2021-5-26 11:11:00

删掉后还可以正确运行?现在电脑也没在身边不方便,能不能说下具体删了什么。

SmoothCriminal 发表于 2021-5-26 11:15:36

王之叹息 发表于 2021-5-26 11:11
删掉后还可以正确运行?现在电脑也没在身边不方便,能不能说下具体删了什么。

就是把那个IF里的感叹号!删去之后还能完成程序,并且程序的基本功能好像也可以。0~5输出具体字符,输入超出0~5边界显示输入错误。

王之叹息 发表于 2021-5-26 11:27:00

SmoothCriminal2021-5-26 11:15
IF0~5 ...


045

王之叹息 发表于 2021-5-26 11:32:00

本帖最后由 王之叹息 于 2021-5-26 11:44 编辑

SmoothCriminal 发表于 2021-5-26 11:15
就是把那个IF里的感叹号!删去之后还能完成程序,并且程序的基本功能好像也可以。0~5输出具体字符,输入 ...

那个发错了,看这个
哦哦,抱歉抱歉,一开始没看清问题,但是你确定?
如果把!去掉的话按道理来说应该是输入0~4既显示字符又显示非法访问,输入5只显示非法访问,输入其他啥都没有啊,要不你再确定下?
你可以先试着把if括号里的printf先忽略思考试试

jia1230 发表于 2021-5-26 14:09:51

新手一枚发表下自己的看法希望对你有帮助
if语句里面的意思是给你定义的I限定一个区间 0<=i<=5,
超出区间里面的会执行if语句 打印非法访问
删掉if后面的并不影响主程序的运行 但是在输入超出区间的数之后 程序不会提醒

SmoothCriminal 发表于 2021-5-26 14:27:42

王之叹息 发表于 2021-5-26 11:32
那个发错了,看这个
哦哦,抱歉抱歉,一开始没看清问题,但是你确定?
如果把!去掉的话按道理来说应 ...

哦哦哦,的确 删去之后是既显示字符又显示非法访问。太感谢了!谢谢 谢谢
页: [1]
查看完整版本: IF语句后面的!有啥用,请大佬点拨一下