在float和int表示中评估c中表达式的不同值?

时间:2014-06-14 11:37:58

标签: c postfix-notation mathematical-expressions

将此表达式更改为后缀表示然后进行评估..我得到17.8作为答案..如果" n"本来是浮动类型然后回答没有问题。因为n是整数类型的变量,所以十进制oint之后的数字应该被截断,而答案应该是17,但输出是15.怎么样?

#include<stdio.h>
int main()
{

int i=3,a=4,n;
float t =4.2;
n=a*a/i+i/2*t+2+t;
printf("n = %d\n",n);
return(0);
}

1 个答案:

答案 0 :(得分:0)

  

我得到17.8作为答案..如果“n”是浮动类型那么回答没有问题。

没有。你不能。如果您的表达式为

,您将获得17.833332
n=a*a*1.0/i+i/2.0*t+2+t;  

见:

a*a/i = (4*4)/3 = 16/3 = 5 
i/2*t = (3/2)*4.2 = 1*4.2 = 4.2
2 + t = 2 + 4.2 = 6.2  

5 + 4.2 + 6.2 = 15.4将被截断为15