这个C表达式在类型中返回什么?(int / double)

时间:2018-06-13 11:58:58

标签: c

您好我想问一个表达式的结果,

int x = 7;
double y = 2;

当(x / y + 2)时类型是什么?

是double,long,int,string还是byte? 感谢

3 个答案:

答案 0 :(得分:4)

这是一个double。当您的表达式包含混合类型时,可以使用算术转换规则:

xdouble的评估中转换为x / y,并且在添加到该字词时,2会转换为double

请注意,无论平台上int(和double)的范围如何,都是如此。

答案 1 :(得分:2)

返回double类型。

(x / y + 2)首先x/y执行,此处变量x属于int类型且y属于double类型,所以你是在两种不同类型之间执行除法运算符,因此算术类型会话发生,即临时int被转换或提升为double,即x/y double收益类型。

下一个(x/y)(double) + 2 (int)再次产生double

答案 2 :(得分:0)

表达式的结果类型为double。详情见C standard的第6.3.1.8节详细介绍了常用算术转换

  

首先,如果任一操作数的相应实数类型为long double,则另一个操作数将在不更改类型域的情况下转换为对应实数类型为long double的类型。

     

否则,如果任一操作数的对应实数类型为double,则另一个操作数将在不更改类型域的情况下转换为对应实数类型为double的类型。< /强>

     

否则,如果任一操作数的相应实数类型为float,则另一个操作数将在不更改类型域的情况下转换为对应实数类型为float的类型。

     

否则,将对两个操作数执行整数提升。

以粗体显示的段落表示如果一个操作数是double而另一个操作数是整数类型,则两个操作数都将具有类型double。你的表达就是这种情况。

由于x的类型为doubley的类型为int,因此y的值将转换为double并且表达式为完整x / y的类型为double。从那里,x / y的类型为double,2的类型为int,值2已转换为double,因此x / y + 2的类型为double {1}}。