求逻辑表达式的值a=3,b=4,c=5(1)(a=b+c,b>c-1)&&(b+=c)||(b*2==a+c)(2)('

问题描述:

求逻辑表达式的值
a=3,b=4,c=5
(1)(a=b+c,b>c-1)&&(b+=c)||(b*2==a+c)
(2)('c'-'a')/2+b>c!=b-a
(1)我化简到(1,0) && 1 || 1 对括号就不会处理了
(2)我化简到1+0 =1 1 = 1 0 1 求检错
1个回答 分类:数学 2014-12-06

问题解答:

我来补答
第一个化简:
括号优先级最高, && 优先级大于 ||
((a=b+c,b>c-1)&&(b+=c))||(b*2==a+c)
化简为:
(a=9,4 > 4)&&(b=9) || (18 == 14)
(9,0)&&(9) || 0
9,0 为逗号表达式,其值为0
所以 :0&&1 || 0 化简为 0 || 0 结果为 0 即false
第二个化简:
+ - 的优先级高于 > 高于 !=
((('c'-'a')/2+b)>c)!=(b-a)
所以化简为:
2/2 + 4 > 5 !=1
5 > 5 !=1
0!=1
所以结果为 1 即true
这个主要是考察运算符优先级,实际写程序时强烈不建议这样写,可读性太差
这个是c语言表达式运算符优先级:
http://www.slyar.com/blog/c-operator-priority.html
再问: 我查了逗号表达式的资料,但是还是不清楚为什么 9,0 其值为0
再答: 0 也是一个表达式啊
9,0 是一个逗号表达式,逗号表达式的值是最后一个表达式的值,也就是0了
 
 
展开全文阅读
剩余:2000