鱼C论坛

 找回密码
 立即注册
查看: 1753|回复: 8

[已解决]IF语句后面的!有啥用,请大佬点拨一下

[复制链接]
发表于 2021-5-26 10:49:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

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

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

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

        return 0;
}

————————————————
IF语句里的!为啥这么用?  我把IF后面的!删掉后程序好像还是可以正常执行。有没有大佬可以给我解下惑,感谢感谢。
最佳答案
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先忽略思考试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 10:59:49 From FishC Mobile | 显示全部楼层
没啥太大意义,就是炫(显摆)而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:09:18 | 显示全部楼层
if()里的应该用了“短路”的知识就是说例如(a=0)&&(a=3);运行完这个语句后a还是等于0因为运行完a=0后,整个语句的值就一定为假也就是0了(你应该知道&&的作用吧),所以a=3这个表达式就不会继续执行了。你可以根据我说的先独立思考下,如果还不明白我可以直接在你本来的程序上讲下。
最后,如果满意的话给个最佳啊亲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:11:00 | 显示全部楼层
删掉后还可以正确运行?现在电脑也没在身边不方便,能不能说下具体删了什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是把那个IF里的感叹号!删去之后还能完成程序,并且程序的基本功能好像也可以。0~5输出具体字符,输入超出0~5边界显示输入错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 11:27:00 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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先忽略思考试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 14:09:51 | 显示全部楼层
新手一枚  发表下自己的看法希望对你有帮助
if语句里面的意思是给你定义的I限定一个区间 0<=i<=5,
超出区间里面的会执行if语句 打印非法访问
删掉if后面的并不影响主程序的运行 但是在输入超出区间的数之后 程序不会提醒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

哦哦哦,的确 删去之后是既显示字符又显示非法访问。太感谢了!谢谢 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表