全部问题 > 当前问题

以下不能正确表示代数式2ab/cd的C语言表达式是 ______ 这个答案2*a*b/c*d为什么中得把c*d改成(c*d)才能和表达式等价?

话心 2015-11-16 21:49:54

共 8 个回答

嘿嘿大人 2015-11-17 08:54:00

因为c和d在原题中都是分母,如果不加括号的话d就会变成分子,乘除符号是统一优先级,所以2*a*b/c*d会从左到右依次计算,所以这个表达式最终结果是2abd/c,与题目要求不同;如果加了括号那么表达式变为2*a*b/(c*d)括号的优先级是最大的,所以结果会变成2ab/cd;不要把数学表达式和c语言中的表达式混淆了

话心 2015-11-17 18:06:03

回复 嘿嘿大人:谢谢您,可是还是有点迷糊,乘除符号是统一优先级,为什么d就会变成分子了,2*a*b/c*d会从左到右依次计算,结果怎么是2abd/c。麻烦您一下。

最佳答案

嘿嘿大人 2015-11-17 19:08:48

回复 话心:在c语言中乘法和除法都是同一优先级,所以他们的运算不是从左到右依次计算的,所以最先算的是2*a,然后是(2*a)*b,然后是((2*a)*b)/c,然后是(((2*a)*b)/c)*d;

blob.png

话心 2015-11-17 19:39:11

谢谢您

话心 2015-11-17 19:41:02

您好,我叫叶磊,您怎么称呼您,您qq是多少?

嘿嘿大人 2015-11-17 20:46:25

回复 话心:不用谢,加油吧,嘿嘿,我叫蒋涛,你也可以叫我嘿嘿大人,qq在群里也有:413845948

话心 2015-11-18 18:26:50

回复 嘿嘿大人:嗯,好的


嘿嘿大人 2015-11-18 19:44:16

回复 话心:ok,嘿嘿

问题来自: 变量的赋值
以下不能正确表示代数式2ab/cd的C语言表达式是 ______ 。
A. 2*a*b/c/d
B. a*b/c/d*2
C. a/c/d*b*2
D. 2*a*b/c*d
答案:D
解析:C语言中乘法和除法优先级相同,所以从左向右进行计算。A、B、C都和表达式等价,D中得把c*d改成(c*d)才能和表达式等价。因此选D。