下面定义的max函数返回值的数据类型是 max(float a, float b) { return (a>b?a:b)

下面定义的max函数返回值的数据类型是 max(float a, float b) { return (a>b?a:b) }
还有一个问题:(float)10/2的值的数据类型是double.为什么?这是强制类型转换吗?
morr 1年前 已收到1个回答 举报

justfor_you 幼苗

共回答了17个问题采纳率:88.2% 举报

一、
max(float a,float b) { return (a>b?a:b) } 函数的返回值是a b 中大的那个数,因此,返回值类型应该是float !
如果在书写时,没有在max前指定返回值类型,C默认数据的返回值类型是int,这时编译时应该有警告或错误提示
二、(float)10/2的值的数据类型是double.为什么?这是强制类型转换吗?
(float)10/2 这个表达式中,(float)只是将10强制转换成float类型,符点型数据与任何数据运算,其结果都是符点型,而C中,对于常数(相对于变量而言,非变量就是常数),符点型常数的默认类型就是double!
以上情况LZ都可以通过写个小测试程序来进行验证.

1年前 追问

10

morr 举报

根据你这句话:“如果在书写时,没有在max前指定返回值类型,C默认数据的返回值类型是int” 这个函数的返回值应该是int型的,,,嗯,我懂了,答案就是int型。 再请问下, 是不是(int),(double) 这种类型外面套上括号的都是强制类型转换?然后将接下来跟着的数字(比如说10)强制转换成那种类型(比如说float)

举报 justfor_you

你说的对! 记不记得在运算符表中,对括号()的描述是:强制转换符?!!当然作为强制转换符使用时的括号()其中间一定要是数据类型,如int , double , struct .....等
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.021 s. - webmaster@yulucn.com