一、C运算符
(1)算术运算符(+、-、*、/、%)
(2)关系运算符(>、<、>=、<=、==、!=)
(3)逻辑运算符(!、&&、‖)
(4)位运算符(~、∧、&、∣、<<、>>)
(5)赋值运算符(=)
(6)条件运算符(?:)
(7)逗号运算符(,)
(8)指针运算符(*、&)
(9)长度运算符(sizeof)
(10)强制类型转换((类型))
(11)分量运算符(.、->)
(12)下标运算符([])
(13)其他(如函数调用())
二、算术运算符
+:加
-:减
*:乘
/:除
%:取余
①优先级:*、\优于+、-
结合方式:自左至右
例:10+a*p-b/e
第一步:a*p
第二步:a*p的结果加上10
第三步:b/e
第四步:a*p+10的结果减去b/e的结果
②\运算只能是整数,其结果也是整数
例:5/3=1 -5/3=-1
三、强制类型转换
(1)转换类型
系统自动转换:遵循类型转换表
强制类型转换:根据需要强行规定数据的类型
(2)一般形式
(类型)(表达式)
例:(int)a /*将a 的类型强制定义为整型*/
(double)(x+y) /*将表达式x+y强制定义为双精度型*/
四、自加自减运算(++、--)
(1)作用是使变量的值加1或减1
(2)++i,--i与i++,i--的区别
++i,--i (在使用i之前使i的值加1或减1)
i++,i-- (在使用i之后使i的值加1或减1)
(3)只能用于变量
5++是不合法的
(4)++、--的结合方向是自右至左
如printf(”%d”,-i++):由于-运算符和++运算符的优先级都是2,结合性都是右结合性,所以原式应等价于printf(”%d”,-(i++)),即如果i的原值等于3,那么先输出3,然后再与-号结合等于-3,然后才对i加1。
赋值运算
一、赋值运算符
赋值运算符为“=”,其意义是将一个常量或表达式赋给一个变量,进行一次赋值操作。
二、赋值运算要求的数据类型转换
(1)将浮点型数据赋给一个整型变量(浮点型>整型)
先将浮点型转换为整型(舍去小数部分),然后以整型形式存储。
如:将3.6赋给int a,结果a为整型,a=3。
(2)将整型数据赋给一个浮点型变量(整型>浮点型)
情况1:整型赋值给单精度浮点数
先将整型转换为浮点型(补足有效位),然后以浮点型形式存储。
如:将23赋值给float a,结果a为float型,a=23.00000。
情况2:整型赋值给双精度浮点数
先将整型转换为双精度浮点型(补足有效位),然后以浮点型形式存储。
如:将23赋值给double a,结果a为double型,a=23.000000000000。
(3)将单精度型赋值给双精度型(单精度型>双精度型)
先将单精度型转换为双精度型(补足有效位),然后以双精度型形式存储。
如:将float a=23.00000赋值给double b,结果b为double型,b=23.000000000000。
(4)将双精度浮点型赋值给单精度浮点型(双精度型>单精度型)
先将双精度型转换为单精度型(截取有效位),然后以单精度型形式存储。
如:将double a=23.000000000000赋值给float b,结果b为float型,b=23.00000。
(5)将字符型赋值给整型(字符型>整型)
情况1:有符号型字符常量赋值给整型
若最高位为0,则高八位补0;若最高位为1,则高八位补1。
情况2:无符号型字符常量赋值给整型
高八位补0。
(6)将整型数据赋值给字符型(整型>字符型)
先将整型转换为字符型(保留存储形式的低八位),然后以字符型形式存储。
如:将int a=65赋值给char b,a在内存中的形式为0000000001000001,b的结果为01000001。
注意:
1. 赋值运算的类型转换有别于算术运算的类型转换
2. 赋值运算类型转换与有效位、存储形式有关
二、复合赋值运算符
复合运算符包括+=、-=、*=、/=、%=、>>=、<<=、&=、
例:a+=b 等价于 a=a+b
三、赋值运算的求解过程
由于赋值运算符的结合性是自右至左,所以应先算右边的表达式后算左边的表达式。
四、赋值运算举例
a=(b=5) 结果a的值为5
a=b=c=5 结果a的值为5
a=5+(b=0) 结果a的值为5
(a=3*5)=3*4 结果a的值为12
逗号运算符
一、逗号运算的一般表达式
表达式1,表达式2,表达式3,……,表达式n
二、逗号运算的求解过程
先求表达式1,后求表达式2,……即顺序求值。
三、逗号表达式的值
逗号表达式取最后一个表达式的值,如
1+2,3+4 此逗号表达式的值为7
a=1+2,a*3 此逗号表达式的值为9
四、逗号表达式的优先级
在附录C中,逗号表达式的优先级为15,排在最后,因此无论逗号表达式与其他任何表达式结合,都是最后执行逗号运算。
五、注意项
声明里的逗号和参数间的逗号都不是逗号表达式,它们只是起间隔作用。如
int a,b,c 这是声明
main(a,b,c) 这是参数
不同进制之间的换算
(1)十进制转换为二进制: 除以2逆序取余(整数)
乘以2顺序取整(小数)
(2)十进制转换为八进制: 除以8逆序取余(整数)
乘以8顺序取整(小数)
(3)十进制转换为十六进制:除以16逆序取余(整数)
乘以16顺序取整(小数)
(4)其他进制转换为十进制:(abc)n =a*n2+b*n1+c*n0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24055160/viewspace-664668/ ,如需转载,请注明出处,否则将追究法律责任。