求字节运算符(sizeof)

sizeof()的作用是用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。

基本形式:

sizeof有两种形式:

sizeof 表达式和sizeof(类型名)。

sizeof 表达式中的表达式并不求值,只是根据类型转换规则求得该表达式的类型,然后把这种类型所占的字节数作为sizeof 表达式这整个表达式的值。写成sizeof(表达式)的形式也可以,这里的括号和return(1);的括号一样,没有任何作用。

但另外一种形式sizeof(类型名)的括号则是必须写的,整个表达式的值也是这种类型所占的字节数。

sizeof的值在编译时就已经知道了。

强制类型转换运算符和赋值运算中的类型转换

强制类型转换运算符:

作用:可以利用强制类型转化运算符将一个表达式转换成所需类型。

一般形式:(类型名)(表达式);例如:(char)(x+y);(将(x+y)的值强制转换成字符型)

赋值运算中的类型转换:

如果赋值运算符两侧的类型不一致,在赋值前系统将自动先将右侧表达式的数值按赋值号左边变量的类型进行转换(也可以用强制类型转换的方式),但这种转换仅限于某些“赋值兼容”的数据之间。对于另一些“赋值不兼容”的数据,如:地址值,就不能赋值给一般变量。

常用的转换规则:

当实型数据赋值给整型变量时,将实型数据的小数部分截断,只取整数部分

例:int x;执行“x=5.21;”后,x的值为5

当整型数据赋值给实型变量时,数值不变,但以浮点形式存储到实型变量中

例:float x=45;输出x的结果为45.00000

当double类型数据赋值给float型变量是,取前面7位有效数字,存放到float型变量的存储单元中,这是数值可能溢出

当字符型数据赋值给整型变量时,由于整型变量占4个字节,而字符只占一个字节,需将字符数据(8位)放到整型变量低8位中,对给该整型变量最高位进行符号扩展,其他位补零。

当整型、短整型、长整型数据赋值给一个char类型变量时,将其低8位原封不动地送到char类型变量中(即截断)。 

其他运算符 

下标[]运算符,一般形式a[i],即*(a+i)。 

.成员选择运算符(对象)

->成员选择运算符(指针)