操作符与关键字
操作符
算数操作符
+ - * / %
- 这里要注意假设9/2,结果不会是4.5,无论打印的类型是float还是int,结果都是4,原因在于如果/两边的数字都是整数,那它执行的就是一个整数除法,结果永远是整数。也就是商。但是如果我想得到4.5,可以给9或2加上一个小数点,比如说9/2.0
- 还有这个操作符%,读作“取模(余)”。9 % 2 的结果是9除以2的结果的余数。9%2的结果会是1。
移位操作符
<< >>
这个概念有点抽象,左边的那个叫左移动操作符,右边那个叫右移动操作符。比如说有以下的这个程序。
int main()
{
int a = 2;
int b = a << 1;
printf("%d\n",b);
return 0;
}
这个所谓的a向左移位一格,意思就是a所代表的那个数字的二进制序列向左移位一格。a代表的数字是2,而2 的二进制序列是00000000000000000000000000000010。至于这个二进制序列是怎么得出来的,我也不知道,不用深究。而给这个二进制序列移位,就是把它整体向左平移一格,那也就是说最左边的那个数字会被丢掉且右边会空出来一格数字,空出来的那个位置用0来代替。这个时候它就变变成了另外一格二进制序列 00000000000000000000000000000100。这个二进制序列所代表的数字是4。所以这个程序运行的结果会是4。
位操作符
& ^ |
&是按位与
| 是按位或
^ 是按位异或
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
解释一下
int main()
{
int a = 2
a = a + 5
a += 5
//这两个是一个意思
//以此类推的话
a = a%5
a %= 5
//这两个也是一个意思
....
return 0;
}
单目操作符
有以下类型
int main()
{
! //逻辑反操作
- // 负值
+ //正值
& //取地址
sizeof //操作数的类型长度
~ // 对一个数的二进制按位取反
-- // 前置、后置--
++ // 前置、后置++
* // 间接访问操作符(解引用操作符)
(类型)//强制类型转换
return 0;
}
什么叫单目操作符?意思是只有一个操作数的操作符。什么是操作数?,比方说a + b,这里面+ 十个算数操作符,它涉及到两个数字:a 和 b。涉及到两个数的就叫双目操作符,涉及到一个数字的就叫单目操作符。
!的作用是逻辑取反,以下是解释
int main()
{
//c语言规定0表示假,非0就是真。
int a = 10;
printf("%d\n",!a);
//感叹号a的作用就是吧真变假,把假变真
//所以这个打印的结果便会是0.
//那如果a=0呢?
int b = 0;
printf("%d\n",!b);
//我们规定,当把假变成真的时候,结果就是1.
return 0;
}
但实际上,!的作用体现在其他地方:
int main()
{
if (a)
{
//如果a为真,做事