运算符
1. 算术运算符
加 +
减 -
乘 *
除 /
这些常用的运算符不再赘述,这里单独说一下取模运算符 %
:它的作用是取整型变量的余数,比如
2. 关系运算符
等于 ==
不等于 !=
(其实是 !=) 大于 >
小于 <
大于等于 >=
小于等于 <=
3. 逻辑运算符
逻辑与 &&
逻辑或 ||
逻辑非 !
这三个运算符跟高中数学第一章的运算符类似,"逻辑与"类似"且","逻辑或"类似"或"。依然满足"一真或为真,一假且为假"。 有人可能没听过这个口诀,没关系,我们展开讲讲:
逻辑与 &&
连接两个表达式,如果两个表达式都为 真
,则结果为 真
,否则为 假
。
逻辑或 ||
连接两个表达式,如果两个表达式都为 假
,则结果为 假
,否则为 真
。
逻辑非 !
将一个表达式取反,如果表达式为 真
,则结果为 假
,否则为 真
。
这些表达式可以嵌套使用,比如 (!(5 == (3 + (6 == 8||9 == 9) == 9)))||(7 == ((7 > 6) ? 7 : 9))
算出来了吗?没算出来也不用灰心(毕竟正常人都不会这么写),答案是 真
可以借助程序来验证一下:
//输出结果是1,在c语言中0代表假(false),其他值代表真(true)
printf("%d\n",(!(5 == (3 + (6 == 8||9 == 9) == 9)))||(7 == ((7 > 6) ? 7 : 9)));
4. 赋值运算符
=
基本的赋值运算符,将等号右边的值赋给等号左边的变量。+=
和-=
a += b
是a = a + b
的简写,a -= b
是a = a - b
的简写,*=
和/=
同理。%=
a %= b
是a = a % b
的简写。
5. 其他运算符
5.1 自增/自减
++
--
运算符用于自增自减,而且每次只自增或者自减
b=a++
和 b=++a
的区别
b=++a
表示 a
先自增 b
;
b=a++
表示先把 a
的值赋给 b
,a
再自增
5.2 三目运算符
//如果num1大于num2,则a=num1,否则a=num2
int a = (num1 > num2) ? num1 : num2;
5.3 强制类型转换
在常量或变量前面加上 (类型)
,强行将其转换为指定的类型。
int a = 9;
//将int类型的a强制转换为long long类型,并将其赋值给long long类型的b
long long b = (long long)a;
5.4 逗号运算符
从左到右依次计算表达式,然后返回最右边表达式的结果。
所有表达式除了最后一个表达式的结果都会被丢弃。
逗号运算符的优先级是最低的,所以它会在所有其他运算符之后执行。
#include<stdio.h>
int main(){
int a = 7;
int b = 9;
printf("%d",(((((++a,b++),a++),++b),a++),++b));//输出12
//猛一看很复杂,但是只要知道逗号表达式的运算规则就好理解了(只保留最右边表达式的结果),一层一层拆括号即可
//另外如果你忘了a++和++a的区别了,我们就再来复习一下,++a是a的数值先加1 再拿a的值进行运算,a++是先取走a的值运算,然后再把a本身的值加1
return 0;
}
6. 位运算符
这个稍微有点复杂,我们一点一点展开讲。
(1) 什么是位
我们之前常说一个数有"几位",比如
在计算机术语中,位(bit)来自英文
计算机中还有一个单位是字节,一个字节是
在计算机中,所有的数字都是以二进制的形式存储的,比如
(2) 十进制转二进制
十进制与二进制相互转换的方法高中学过,但是相信不少同学跟我一样,高考之后就忘得七七八八了(bushi),所以我们来简单复习一下进制转换的方法:
转换方法
(如果这部分你已经掌握了,可以直接跳到位运算符)
将十进制数除以
光说有点抽象,我们来看个示例:
刚才只讲了整数,现在说说带小数的十进制数:
转换方法
把带小数的十进制数分成整数部分和小数部分,整数部分依然用刚才的方法,小数部分不断乘
注意这次是 从前往后读 你记下来的数字,而不是像整数部分转换时从后往前倒着读
例如:
(3) 二进制转十进制
将二进制数从前往后,每次取出一位,乘以
比如
Tips
其实C语言有专门负责进制转换的函数,我们在函数那章再聊,这里先聊原理。
(4) 位运算符
刚才我们聊了位的概念,现在我们来聊一下位运算符。
(4.1) 位左移(<<)与位右移(>>)
位左移 <<
是各二进位全部左移若干位,高位丢弃,低位补
位右移 >>
是各二进位全部右移若干位,低位丢弃,高位补
每位移一次,相当于这个数乘或者除以
(4.2) <<=和>>=
<<=
和 >>=
这两个运算符跟先前的 +=
、-=
很像,a >>= b
相当于 a = a >> b
,a <<= b
相当于 a = a << b
。
7. 常用运算符优先级
优先级 | 运算符 |
---|---|
1 | () [] . -> |
2 | ! +(正号) -(负号) ++ -- |
3 | * / % |
4 | +(加) -(减) |
5 | < <= > >= |
6 | == != |
7 | && |
8 | || |
9 | = += -= *= /= %= |
有些符号我们还没讲到,不着急,先有个大致印象,等后面我们都会一一讲解。