鱼C论坛

 找回密码
 立即注册
查看: 5740|回复: 12

C运算问题!!

[复制链接]
发表于 2012-12-16 18:55:41 | 显示全部楼层 |阅读模式
10鱼币
#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
输出是1,但偶算出大于1,请鱼油们给出个详细运算过程!!

最佳答案

查看完整内容

a如果是0,那么!a=1;如果是非0,那么!a=0。!4=0,!5=0,!0=1.所以0&&0|||就为1.顺便把c语言优先级发给你,希望对楼主有帮助
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-16 18:55:42 | 显示全部楼层
a如果是0,那么!a=1;如果是非0,那么!a=0。!4=0,!5=0,!0=1.所以0&&0|||就为1.顺便把c语言优先级发给你,希望对楼主有帮助

c语言符号优先级.zip

7.31 KB, 阅读权限: 20, 下载次数: 9

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 12:16:59 | 显示全部楼层
楼上正解 lz可能和位操作符搞混了
||和|是不同的
楼主应该是把关系操作符和逻辑操作符搞混了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 14:42:44 | 显示全部楼层
2楼已经解出来了。 !a == 0; !b==0; !c==1;  所以d就等于0与0或1,结果当然为1。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 22:20:48 | 显示全部楼层
楼主,这个牵涉到运算符优先级的问题,其中!的优先级大于&&和||,而&&又优先于||所以,实际的运算过程是先运算!a,!b和!c,结果分别是0, 0 ,1,然后计算0&&0得到0,然后计算0||1.所以得到的结果是1,再赋给d进行输出,所以输出的是1.
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 09:46:11 | 显示全部楼层
本帖最后由 づ綄镁の爱ヽ 于 2012-12-18 09:48 编辑

!a && !b || !c   a, b,均为非0数,c为0
!a就是0 , !b也是0 , !c就是1了
写成这样就好理解了:
0 && 0 || 1
经过与运算和或运算后,这里的值是1
所以 d=1
&&运算的优先级,要大于||运算, !逻辑非的运算优先级在这里最高,=赋值运算的优先级最低
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 09:49:03 | 显示全部楼层
请多使用括号,它是第一优先级
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 13:55:06 | 显示全部楼层
#include<stdio.h>
void main()
{ int a=4,b=5,c=0,d;
if(d==!a&&!b||!c)  //这个位置是不是差个等号,
printf("%d\n",d);
}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 14:26:12 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 14:46:57 | 显示全部楼层
优先级:!> 算术运算符 > 关系运算符 > && > || > 赋值运算符
d=!a&&!b||!c;a=4,b=5,c=0,
根据优先级,先算!a,!b,!c.
!a==0,!b==0,!c==1.
然后先算&&再算||最后算=
!a&&!b==0, 0||!c==1
所以d=1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 16:13:59 | 显示全部楼层
EverLyn 发表于 2012-12-17 12:16
楼上正解 lz可能和位操作符搞混了
||和|是不同的
楼主应该是把关系操作符和逻辑操作符搞混了

请教一下|是什么运算符。怎么运算的。?可以聚个例子吗谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 18:07:39 | 显示全部楼层
压寨宝宝 发表于 2012-12-18 16:13
请教一下|是什么运算符。怎么运算的。?可以聚个例子吗谢谢

" | "是位运算  问问百度吧  
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-12-24 00:00:53 | 显示全部楼层
大于1?怎么可能,都是逻辑运算,值为0或1的好不好~!!!
而且!为一元运算符,优先级高;
&&与||为二元运算符,同等优先级,优先级低;
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 09:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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