运算符
常用的基本运算符包括:算术、自增自减、关系、逻辑、条件、赋值、逗号运算符等
运算符的优先级:在计算中有多个运算符时,按优先级进行计算
算术运算符
正或加(+),负或减(-),乘(*),除(/),模(求余)(%)
乘除模的优先级为3,加减优先级为4
自增自减运算符
优先级为2(比较高)
+
+
++
++:变量自身的值加一
−
−
--
−−:变量自身的值减一
前缀:先自增(减)后运算
后缀:先参与运算后自增(减)
关系运算符
大于> 、 小于<、 大于等于>=、小于等于<=、等于==、不等于!= (一个=是赋值)
关系表达式的结果只有两种:真(1)或假(0)
逻辑运算符
与(&&):同时为真才真,
或(||):同时为假才假,
非(!):假变真,真变假
位运算符
只能对整型数据操作
左移 <<: 整数<<n,将一个整数的二进制向左移动n个二进制位
右移 >>: 整数>>n,将一个整数的二进制向右移动n个二进制位
按位非 ~:~整数,将一个整数的二进制各位取反,1变0,0变1
按位与 &:整数&整数,将两个整数的各位二进制相与,对应位置,有0则0
按位或 |:整数|整数,将两个整数的各位二进制相或,对应位置,有1则1
按位异或 ^:整数 ^整数,将两个整数的二进制相异或,遵循相同为0相异为1的规则
1字节=8位 二进制位
二进制位的最高位表示符号(0为正数,1为负数)
举例:10 二进制表示 0000 1010
当
int a = 10;
a<<1; //表示 成0001 0100,a = 20
左移几位相当于乘以2的n 次方
右移几位相当于除以2的n 次方
按位非 注意二进制数的原码、反码和补码(正负数不一样)
正整数的原码、反码和补码一样
负数的原码首位1,反码按位非,补码=反码+1(最低位+1)
int c = 10;
printf(“%d\n”,~c); // 则 ~10=-11
赋值运算符
运算符 | 意义 |
---|---|
= | 赋值 |
+= | b+=a; 即b=b+a |
-= | b+=a; 即b=b-a |
*= | b*=a; 即b=b*a |
/= | b/=a; 即b=b/a |
%= | b%=a; 即b=b%a |
逗号运算符
顺序求值运算符,起到分隔作用
强制转换运算符
(数据类型)
如 float PI = (float)3.14; //小数默认为double类型的数据
条件运算符
表达式1?表达式2:表达式3
表达式1的结果为真则执行表达式2,否则执行表达式3
注:sizeof() 求类型大小,数据的字节数
操作数:一个运算符要用到几个变量计算,如双目运算符
表达式
用运算符和括号将运算对象(对象包括常量、变量、函数等)连接起来的、符合C语言语法规则、用于相关运算的式子
注:不同数据类型之间的混合运算
- float 与 double 混算,都按 double 算
- int 与 float(或double)混算,将 int 转化成相应
- char 与 int 混算,按照 ASCII 码数转换后运算
C语句
表达式;