逻辑运算符,,,昨天德偶书写错误。。不好意思。。
答案:5 悬赏:0 手机版
解决时间 2021-01-30 04:08
- 提问者网友:寂寞撕碎了回忆
- 2021-01-29 07:35
逻辑运算符,,,昨天德偶书写错误。。不好意思。。
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-01-29 08:04
你只知道过马路要横过,但是你没有了解注意事项,你看书只看一半是不行的。
若“&&”德左运算对象值为0,则不再对右运算对象求值,因整个式子德结果必定为0.
若“||”德左运算对象值为非0,则不再对右运算对象求值,因整个式子德结果必定为1.
书中讲这个定义时是只针对一种运算,而不是混合运算。
与的运算规则是高于或的
它先算与,再算或。
这种情况以或为标准而不是与说了算。
像0*2+3一样,决定结果的是最低的运算符。
运算符就是让它运算的,你总不能不去算*而直接去算加吧。
像4*5 &&5+6和结果就是与决定最终结果。
你只要明白决定结果的是最后运算的运算符就行
了。
额。书上说:“值得注意德是,逻辑运算符不按照规定德优先级计算。”遵循从左至右德原则。
这个谁给你说的?
这不是运算符的问题,这是编译器决定结果的。
像这句a*b&&a||b
在某些编译器上得这样写((a*b)&&a)||b.
不过现在的编译器都是不必要加()的。
若“&&”德左运算对象值为0,则不再对右运算对象求值,因整个式子德结果必定为0.
若“||”德左运算对象值为非0,则不再对右运算对象求值,因整个式子德结果必定为1.
书中讲这个定义时是只针对一种运算,而不是混合运算。
与的运算规则是高于或的
它先算与,再算或。
这种情况以或为标准而不是与说了算。
像0*2+3一样,决定结果的是最低的运算符。
运算符就是让它运算的,你总不能不去算*而直接去算加吧。
像4*5 &&5+6和结果就是与决定最终结果。
你只要明白决定结果的是最后运算的运算符就行
了。
额。书上说:“值得注意德是,逻辑运算符不按照规定德优先级计算。”遵循从左至右德原则。
这个谁给你说的?
这不是运算符的问题,这是编译器决定结果的。
像这句a*b&&a||b
在某些编译器上得这样写((a*b)&&a)||b.
不过现在的编译器都是不必要加()的。
全部回答
- 1楼网友:我住北渡口
- 2021-01-29 10:14
那个不是数字0而是'真'和'非真'......只是显示的时候用0和非0表示罢了
- 2楼网友:旧脸谱
- 2021-01-29 09:43
&&的运算级别高于||
你的第一个例子中
a=0,b=1,c=2
a&&b||c
先算a&&b=0
再算(a&&b)||c=1
你的第二个例子中
a=1,b=2,c=0
a||b&&c
先算b&&c=0
再算a||(b&&c)=1
#include
main()
{
int a,b,c;
a=0;
b=1;
c=2;
if(a&&b||c){
printf("1 ok\n");
}
a=1;
b=2;
c=0;
if(a||b&&c){
printf("2 ok\n");
}
}
一试便知
你的第一个例子中
a=0,b=1,c=2
a&&b||c
先算a&&b=0
再算(a&&b)||c=1
你的第二个例子中
a=1,b=2,c=0
a||b&&c
先算b&&c=0
再算a||(b&&c)=1
#include
main()
{
int a,b,c;
a=0;
b=1;
c=2;
if(a&&b||c){
printf("1 ok\n");
}
a=1;
b=2;
c=0;
if(a||b&&c){
printf("2 ok\n");
}
}
一试便知
- 3楼网友:不甚了了
- 2021-01-29 09:18
C规定,非零为真,0为假,不要看那些数字,a||b因为有一个为真,所以结果就是真,值就是1了,这么说不知道你能不能明白
- 4楼网友:山有枢
- 2021-01-29 08:35
0是空 1是非空
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯