C语言中(type)形式的强制类型转换语法是什么?
请问C语言中
(type)这种形式是什么语法? 先看你提供的代码和运行结果:
代码示例
void main() { float af; int a = 75; int cov = 100; af = a/cov; printf("af: %f\n", af); af = (float) a/(float) cov; printf("af: %f\n", af); }
运行输出
af: 0.000000 af: 0.750000
你观察到的现象完全正确:不加(float)时是整数除法得0再转float,加了之后是先转成浮点再做除法得到正确的小数结果。这种(type)形式就是C语言的强制类型转换(Type Cast),也叫显式类型转换。
简单说,它的作用就是手动告诉编译器:“把这个值临时转换成我指定的type类型来处理”,注意这里只是临时转换——原来的变量本身的类型和存储的值不会被改变,只是在当前这个表达式里用转换后的值参与运算。
针对你的例子再拆解一下:
- 第一次运算
a/cov:两个都是int类型,C语言会执行整数除法,直接截断小数部分,得到0,之后把这个int类型的0隐式转换成float赋值给af,所以输出0.000000。 - 第二次运算
(float)a/(float)cov:a被临时转成float类型的75.0,cov被转成float类型的100.0,此时编译器会执行浮点数除法,得到精确的0.75,赋值给af后就输出0.750000。
另外给你提个小优化:其实不需要把两个操作数都强制转换,只转其中一个就够了。比如(float)a / cov或者a / (float)cov,编译器会自动把另一个int类型的操作数也提升为float类型来匹配运算,结果同样是0.750000,这样写更简洁~
内容的提问来源于stack exchange,提问作者Dario R
相关产品推荐
相关产品推荐

