1.单纯赋值运算符"="
它是个双目运算符,结合性是从右到左。
2.复合赋值运算符
在"="前面加上其他运算符,即构成复合的运算符。
记主两个不常见的:
a >>=b—>a=a>>b;
a<<=b—>a=a<
3.赋值表达式
,即变量=表达式
注意:赋值表达式的左侧只能是一个变量名,而不能是一个表达式,如:a+b=b+c,是不对的
赋值运算符的右边也可以是赋值表达式,例如a=b=c=2,即将a,b,c都赋值为2。
4.特殊的赋值运算符
自增"++"
他的作用是使变量的值加1。
自减运算符"–"
它的作用是使变量的值减1。
总结
自增和自减运算符的结合方向是自右向左
自增自减在前,变量会先执行自增或自减在进行其他操作
自增自减在后,变量会现参与运算在执行自增和自减
5.赋值中的类型转换
在进行赋值运算时,会遵循将表达式右侧的值的类型转换成表达式左边的值的类型。(赋值时的类型转换是指上是强制的)
浮点型与整型
将浮点型装换成整型时,将舍弃浮点数的小数部分,只保留整数部分。将整型值付给浮点型变量,数值不变,即小数点后带若干个0.
单双精度浮点型
由于C语言中的浮点数总是用双精度来表示的,所以float型数据只是子啊尾部加0延长为double型数据参加运算。然后直接赋值。double转成float型通过截尾数来实现,截断前要进行四舍五入操作。
char型与int型
int 型赋值char形时,只保留其最低八位,高位舍弃。
char型赋值给int型变量时,有些编译程序不管其值大小,都做正数处理。有些编译程序在转换时,若char型数据值大于127,就做负数处理。对于使用者来说,如果原来的char型数据取正值,转换后仍为正值;如果原来的char型可正可负,则转换后仍然保持原值,只是数据的内部表示形式有所不同。
int和long型
long型赋值个int型值,将低16位赋值给int型变量,而将高十六位阶段舍弃。(这里假设int占两个字节)
而将int型赋值给long 型时,其外不值保持不变,而内部形式有所改变。
无符号整数
unsigned赋值给signed时,内部的存储形式保持不变,但是外部的值却可能改变。
而将一个signed型整型数据赋值给长度相同的unsigned型变量时,内部的存储形式不变,但外部表示时总是无符号的。
6.逗号运算符和表达式
C语言中","也是一种运算符,称为逗号运算符。其功能是将两个两个表达式连接起来组成一个表达式。
表达式1,表达式2
如:y=(x=a+b),c+d;
本例中,y是整个表达式的值,也就是表达式2的值,x是第一个表达式的值。对于逗号表达式:
逗号表达式一般形式中的表达式1,和表达式2也可以是逗号表达式的值。
将其进行扩展为"表达式1,表达式2,表达式3…表达式n",整个逗号表达式的值就是表达式n的值。
程序中使用逗号表达式,通常是要分别求逗号表达式内各各表达式的值。
并不是在所有出现否好的地方都组成逗号表达式,如在白能量的说明中,函数参数表中逗号只是用于各变量之间的间隔符。
例如:y=(z=8,x=5,y=3);
z赋值为3,x赋值为5,y赋值为3。
z = (x=5,y=6,x+y);
z赋值为11,x赋值为,y赋值为6;
7.位运算符与表达式
位运算符
位运算符是指进行二进制位运算。
与运算符(&)
双目操作符,当两个进行相与时,只有两者都为"1"时结果才为"1"
或运算符
双操作符,当当两个位进行相或时,只要其中有一方为1,结果就为1。
异或操作符(^)
相同为0,不同为1。
移位操作符(<>)
区分逻辑移位与算术移位。
位表达式
在这些位运算符中,取反运算符优先级别最高,其次是移位运算符,再次是与或,异或。
在实际使用中,通常是用其进行赋值运算。
如:a<<=2 ---->a=a<<2;
记住:这种复合运算符的执行效率更高。
8.关系运算符和表达式
关系运算符
关系表达式
关系表达式的值一般为0,则为假,非0则为真。
9.逻辑运算符和表达式
逻辑运算符
运算符
含义
&&
逻辑与
||
或
!
非
逻辑表达式
表达式 逻辑运算符 表达式
如:a>b && c>d
10.sizeof操作符
sizeof是一个单目运算符,他的运算对象是变量或数据类型,运算结果为一个整数类型。运算的一般形式如下:
sizeof()
注意:sizeof只针对数据类型,不针对变量
11.条件运算符
条件运算符是C语言中唯一一个三目运算符
? :