C语言中,定义 int x ; float y ;则int(y+x)结果为整形。这句话为什么是错误的

如题所述

第1个回答  推荐于2017-09-25
你说的是(int)(y+x)还是(int)y+x?

int(y+x)是不行的哦。
(int)(y+x结果是int型。
(int)y+x结果是float型。追问

(int)(y+x)结果是什么型 (int)y+x结果是什么型 没看懂

(int)(y+x)结果是什么型 (int)y+x结果是什么型 没看懂

追答

C语言里面(int)y就是把y变成int型。你可以理解成y→int。
这个运算符优先级比括号低,比加号高。(比如乘也是一样的)先计算优先级高的。

所以说(int)(y+x)就是(y+x)→int。结果是int型。
额,(int)x+y是float型。这个相当于是(x→int)+y
C语言规定是int+float=float。比如1+1.5结果是2.5这是float型。

追问

按你的意思,(int)(y+x)结果就是整型了?但是有个题整形是错的啊

追答

(int)(y+x)是整形
int(y+x)这个是错的

本回答被提问者和网友采纳
第2个回答  2014-10-19
(int)(y+x) 是将y+x的结果强制转换为int
第3个回答  2014-10-19
看你输出结果定义的变量类型追问

结果定义就是整形啊 这是强制类型转换 。。

追答

能相加啊,现在的状态为int型,如果你定义一个double的变量去接收结果的话,最终结果还是double型的int x, double y,double z, z=(int)(x+y),最终结果还是double型的
int x,z; double y; z=(int)(x+y),这样结果就为int型啊
不同类型的数相加都是低精度转化为高精度然后在相加,这只是一个临时状态,最终的取值还是看定义接收结果变量的类型

追问

就是说int(y+x)的结果是不确定的,是吧
那int(y)+x结果是什么样的

第4个回答  2014-10-19
强制类型转换:(int)(y+x);追问

什么意思。。类型不同,就不能相加吗。能相加的话怎么加

追答

类型不同,可以相加,但相加会默认成某种类型,所以你要得到什么类型需要直接转化。

相似回答