对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是 .代数式 C语言表达式A) exp(x*x/2)/sqrt(2*3.14159)B) 1.0/2.0*(a*x+(a+x)/(4*a)C) sqrt((pow(sin(x*3.14159/180),2.5))D) x*x-exp(5.0)答案是C选项,请问为什么是C?错在哪里?
问题描述:
对应以下各代数式中,若变量a和x均为double类型,则不正确的C语言表达式是 .
代数式 C语言表达式
A) exp(x*x/2)/sqrt(2*3.14159)
B) 1.0/2.0*(a*x+(a+x)/(4*a)
C) sqrt((pow(sin(x*3.14159/180),2.5))
D) x*x-exp(5.0)
答案是C选项,请问为什么是C?错在哪里?
答
x为double型,那么乘法与除法的优先级相同,按从左到右的顺序.x*3.14159的结果为double型,设结果为Y,那么Y/180结果为整型,因为两者精确度不同,电脑会自动修改为整数.结果为整数.正确的是把180修改为180.0,改为double型.