跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:unary_conversions
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 一元转换(Unary conversions) ====== 一元转换主要发生在一元运算之前(包括!、-、+、~、*),也包括%%<<%%和%%>>%%这两个特殊的二元运算。 ===== 整型(Integer) ===== 一元转换最需要注意的地方是整型(integer)转换,也称为整型提升(integer promotion),规则如下: * int及更大的整型不做转换; * 比int小的有符号整型(signed)都转换(提升)为int; * 比int小的无符号整型(unsigned)则分两种情况: * 如果int能容纳该无符号类型的所有值,则提升为int(**Traditional C提升为unsigned int**); * 如果int无法容纳该无符号类型的所有值,则提升为unsigned int; * 对于结构体的位域(bit fields),类型int、signed int、unsigned int当做比int小的整型来处理。 简要的说,标准C采用值保留(value preserving)原则,Traditional C采用无符号保留(unsigned preserving)原则。两者在无符号整数提升规则上的这点区别,要特别小心。 ===== 浮点型(Float-point) ===== 标准C对浮点型不做转换,但**Traditional C将float提升为double**。 ===== 数组(Array) ===== 数组类型转换为一个指向该数组首元素的指针。 ===== 函数(Function) ===== 函数类型转换为一个指向该函数的指针。 {{tag>C语言}}
computer/c/tips/unary_conversions.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部