黑马程序员技术交流社区

标题: 今天学习了运算符 各种预算符啊,感觉有点晕,希望哪位大神能够帮我解答 [打印本页]

作者: 这是829    时间: 2015-5-19 23:27
标题: 今天学习了运算符 各种预算符啊,感觉有点晕,希望哪位大神能够帮我解答
今天的作业题做错了,希望有大神帮我解答一下,原题如下
  设int a = 2, b= 3,c ,d ,e, f;执行
c =(a++>=--b);
d =(a ==++b);
e =(a--!=b);
f =(++a>b--);
请问a,b,c,d,e,f的结果是
老师给出的答案是3,2,1,1,0,0 我自己算出来的答案是3,2,2,1,0,0我不明白我自己c怎么算错了,而且我都不知道我其他的 算对了是蒙的还是正确算出来的希望哪位大神能够详细的帮我解答一下,在此谢谢了!
作者: Emma    时间: 2015-5-20 09:31
你百度一下运算符优先级表,然后从最高优先级的符号开始,一个一个的慢慢的运算,希望能采纳
作者: 这是829    时间: 2015-5-20 21:00
Emma 发表于 2015-5-20 09:31
你百度一下运算符优先级表,然后从最高优先级的符号开始,一个一个的慢慢的运算,希望能采纳 ...

嗯,好的
作者: 黑客大王    时间: 2015-5-20 21:07
晕...我这个也死晕
作者: cui0wei0    时间: 2015-5-21 13:50
C = 判断, 那不是1就是0, 怎么可能是2呢?
作者: 星空眼泪    时间: 2015-5-21 15:39
/*
设int a = 2, b= 3,c ,d ,e, f;执行
// 首先我们知道a++是先运算比较,后加1,--b是先加1,后运算比较,
// 所以表达式就等价于 c = (2 >= 2),应该表达式成立,所以c = 1,a同时变成了3哦
// 只要注意:表达式的结果就两种,为真时,等于1,为假时,等于0
c =(a++>=--b);
// 优先级运算符
1        括号        ()、[]
2        正负号        +、-
3        自增自减,非        ++、--、!
4        乘除,取余        *、/、%
5        加减        +、-
6        移位运算        <<、>>、>>>
7        大小关系        >、>=、<、<=
8        相等关系        ==、!=
9        按位与        &
10        按位异或        ^
11        按位或        |
12        逻辑与        &&
13        逻辑或        ||
14        条件运算        ?:
15        赋值运算        =、+=、-=、*=、/=、%=
16        位赋值运算        &=、|=、<<=、>>=、>>>=
// 因为++b,所以b=3,这个时候a也等于3,所以(3 == 3)表达式成立,d = 1
d =(a ==++b);
// a先比较,表达式(3 != 3)为假,所以e=0,运算后,这时a=2了
e =(a--!=b);
//a先运算再比较,b先比较,后运算,所以表达式(3>3)为假,所以f = 0,同时b = 2
f =(++a>b--);
所以的最后的结果是a=3,b=2,c=1,d=1,e=0,f=0
*/
作者: 这是829    时间: 2015-5-24 11:48
星空眼泪 发表于 2015-5-21 15:39
/*
设int a = 2, b= 3,c ,d ,e, f;执行
// 首先我们知道a++是先运算比较,后加1,--b是先加1,后运 ...

谢谢大神,讲解好详细的说。
作者: 这是829    时间: 2015-5-24 12:42
cui0wei0 发表于 2015-5-21 13:50
C = 判断, 那不是1就是0, 怎么可能是2呢?

哦哦,知道了
作者: 星空眼泪    时间: 2015-5-24 15:24
这是829 发表于 2015-5-24 11:48
谢谢大神,讲解好详细的说。

不是什么大神,我也是在准备进黑马培训。
作者: 这是829    时间: 2015-5-24 18:07
星空眼泪 发表于 2015-5-24 15:24
不是什么大神,我也是在准备进黑马培训。

恩,我是刚来学习没多久,一起努力
作者: hi虚无缥缈    时间: 2015-5-24 18:13
c =(a++>=--b);
a++>=--b成立是1,不成立是2.
作者: MTT    时间: 2015-5-24 21:35
我也看看。
作者: hui1107464497    时间: 2015-5-25 12:49
学习了
作者: loveIos    时间: 2015-5-25 18:28
赞 人气
作者: 我是小菜蛋    时间: 2015-5-29 17:13
开眼了

作者: woaidd99    时间: 2015-5-29 20:55
一步一步来  把每一个式子的结论 写出来
作者: hi虚无缥缈    时间: 2015-5-29 21:02
好好看看,运算符还是相对简单点的.
作者: wangguanyang    时间: 2015-5-29 22:54
我来给你解释一下,首先,自增自减的运算符优先级高于比较运算符,所以先计算自增自减,再判断c =(a++>=--b);a++之后a的值变成3,但这个表达式的值还是2,--b之后表达式和变量的值都变成2,这时候c =(2>=2),条件成立,所以返回1.
注意:在c语言中,任何数值都有真假性,真为1,假为0
作者: chensc    时间: 2015-5-30 08:28
学习学习!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2