当前位置:嗨网首页>书籍在线阅读

24-强制类型转换运算符

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.5.1 强制类型转换运算符

通常,应该避免自动类型转换,尤其是类型降级。但是如果能小心使用,类型转换也很方便。我们前面讨论的类型转换都是自动完成的。然而,有时需要进行精确的类型转换,或者在程序中表明类型转换的意图。这种情况下要用到强制类型转换(cast),即在某个量的前面放置用圆括号括起来的类型名,该类型名即是希望转换成的目标类型。圆括号和它括起来的类型名构成了强制类型转换运算符(cast operator),其通用形式是:

(type)

用实际需要的类型(如, long )替换type即可。

考虑下面两行代码,其中 miceint 类型的变量。第2行包含两次 int 强制类型转换。

mice = 1.6 + 1.7;
mice = (int)1.6 + (int)1.7;

第1行使用自动类型转换。首先, 1.61.7 相加得 3.3 。然后,为了匹配 int 类型的变量, 3.3 被类型转换截断为整数 3 。第2行, 1.61.7 在相加之前都被转换成整数( 1 ),所以把 1+1 的和赋给变量 mice 。本质上,两种类型转换都好不到哪里去,要考虑程序的具体情况再做取舍。

一般而言,不应该混合使用类型(因此有些语言直接不允许这样做),但是偶尔这样做也是有用的。C语言的原则是避免给程序员设置障碍,但是程序员必须承担使用的风险和责任。

总结 C的一些运算符

下面是我们学过的一些运算符。

赋值运算符:

=  将其右侧的值赋给左侧的变量

算术运算符:

+    将其左侧的值与右侧的值相加

-    将其左侧的值减去右侧的值

-    作为一元运算符,改变其右侧值的符号

*    将其左侧的值乘以右侧的值

/    将其左侧的值除以右侧的值,如果两数都是整数,计算结果将被截断

%    当其左侧的值除以右侧的值时,取其余数(只能应用于整数)

++   对其右侧的值加 1 (前缀模式),或对其左侧的值加 1 (后缀模式)

--    对其右侧的值减1(前缀模式),或对其左侧的值减1(后缀模式)

其他运算符:

sizeof   获得其右侧运算对象的大小(以字节为单位),运算对象可以是一个被圆括号括起来的类型说明符,如sizeof(float),或者是一个具体的变量名、数组名等,如sizeof foo

(类型名)  强制类型转换运算符将其右侧的值转换成圆括号中指定的类型,如(float)9把整数9转换成浮点数9.0