一、数学计算
1. 加法运算符(+)
功能:加法运算符用于两个操作数相加。它可以用于整数、浮点数以及字符类型(因为字符可以按ASCII码值处理)
特点:可以对整型(int)、浮点型(float)、双精度型(double)等类型操作数进行加法操作。如果操作数中有一个是浮点型,结果将是浮点型。
自增:++(前置或后置)自减:--(前置或后置)
++a:先加1再使用;a++:先使用再加一(如果a是5,a++打印出来为5,++a打印出来为6)
2. 减法运算符(-)
与加法类似
运算符转换规则:不同类型的输出的时数据的类型会变成较高级(以免数据丢失)(往范围大的靠近)
char(8位)<short int(16位)<int(32位)<longlong(64位)
signed<unsigned
int<float<double
3. 除法运算符(/)
对于整数除法,结果为整数,且会舍弃小数部分。对于浮点数除法,结果保留小数部分。
4. 取余运算符(%)
功能:取余运算符用于计算两个整数相除后的余数。(也叫取模运算)
仅适用于整数类型,不能用于浮点数。
结果的符号与被除数的符号一致。
除以零错误:如果尝试执行x / 0或x % 0,程序会抛出运行时错误。
整数除法的精度丢失:当对整数执行除法时,结果将是整数。
如果需要计算浮点数的余数,可以使用fmod函数(在math.h库中)。
二、逻辑判断
大于:>; 小于:<; 大于等于:>=; 小于等于:<=; 等于:==; 不等于:!=
多个比较的时候
逻辑与:&&(当两个操作数都为真时,结果为真)
短路求值:当第一个条件已经确定最终结果(0)时,后面的条件不会再被计算。
逻辑或:||(当至少一个操作数为真时,结果为真)
逻辑非:!(取反操作)
三、位运算
要把数转化为二进制来计算
按位与:&;(当两个操作数的对应位都为1时,结果位为1;否则为0)
本质:与1与保留,与0与置零(清零某位)
用途:二进制表示下的按位与计算。主要用于清零某些位、掩码操作。
按位或:|;(只要两个操作数的对应位中至少有一个为1,结果位为1。)
本质:与1或置1,与0或保留(置1某位)
配合左移来强制改变某位的值
二进制表示下的按位或计算。主要用于设置特定位,保留现有值并修改特定位。
按位异或:^;(两个操作数的对应位不同,结果位为1;相同时结果为0)
本质:与0异或不改变原来位,与1异或改变
用途:用于位翻转。无需临时变量交换两个数的值:
取反:~;(操作数的每一位取反,即0变为1,1变0)
用途:用于生成补码和处理负数。
左移:<<;(将操作数的二进制表示向左移动指定的位数)(地位补0,高位舍去)
本质:左移相当于乘2的幂次
用途:左移用于快速乘以2的幂,适用于性能敏感的程序。
右移:>>;(将操作数的二进制表示向左移动指定的位数)(无符号数补0,有符号数补符号位)
本质:右移相当于除以2的幂次。(输出的整数形式,小数舍去)