鱼C论坛

 找回密码
 立即注册
查看: 1417|回复: 2

[已解决]c语言

[复制链接]
发表于 2020-2-23 15:45:40 | 显示全部楼层 |阅读模式

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

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

x
6. 请用小括号和数字序号体现表达式中运算符的优先顺序,并口算出表达式的值(下边假设变量 a、b、c、d 的值分别是 1、2、3、4)
A. a + b && c / d
写成:(a + b)1 && (c / d)2
求值:(1 + 2) && (3 / 4) == 3 && 0 == 0

问:除号的优先级不是要比加号和“&&”的优先级来的高吗?
       不是应该写成: (a+b)2 && (c+d)1     ?
最佳答案
2020-2-24 00:04:10
首先要说明的是&& 是一个逻辑运算符
逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。
逻辑运算的优先级小于算术运算符,而且是从左往右的哦。所以是先把左边的值算出来,然后再把右边的值算出,最后进行左右逻辑与
写成:(a + b)1 && (c / d)2
求值:(1 + 2) && (3 / 4) == 3 && 0 == 0
结果 没问题。

注意逻辑与&&和位与&的区别
两个例子你可以运行下试试
1)int a=2,b;
b=0 && a ++;
printf("%d %d \n",a,b);

int a=2,b;
b=0 & a ++;
printf("%d %d \n",a,b);

你会发现两组b 都等于0,但第一个a=2,第2个a=3.

2)  int a=2,b;
b=2 && a ;
printf(" %d \n",b);

int a=2,b;
b=2 & a ;
printf(" %d \n",b);

你会发现第一个b=1,第2 个b =2.
好好体会下&&用法,希望对你有所帮助。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-23 17:08:25 | 显示全部楼层
1+2 && 3/4
程序开始执行:
3 && 3/4
3 && 0.75
1
结果为1
在罗辑运算,是从左至右,先算它左边的,再算它右边,再罗辑,清楚了。罗辑的返回值是一个0或1.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 00:04:10 | 显示全部楼层    本楼为最佳答案   
首先要说明的是&& 是一个逻辑运算符
逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。
逻辑运算的优先级小于算术运算符,而且是从左往右的哦。所以是先把左边的值算出来,然后再把右边的值算出,最后进行左右逻辑与
写成:(a + b)1 && (c / d)2
求值:(1 + 2) && (3 / 4) == 3 && 0 == 0
结果 没问题。

注意逻辑与&&和位与&的区别
两个例子你可以运行下试试
1)int a=2,b;
b=0 && a ++;
printf("%d %d \n",a,b);

int a=2,b;
b=0 & a ++;
printf("%d %d \n",a,b);

你会发现两组b 都等于0,但第一个a=2,第2个a=3.

2)  int a=2,b;
b=2 && a ;
printf(" %d \n",b);

int a=2,b;
b=2 & a ;
printf(" %d \n",b);

你会发现第一个b=1,第2 个b =2.
好好体会下&&用法,希望对你有所帮助。




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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