今天学习了操作符感觉计算机语言也像其他语言一样,挺有意思的,分享一下心得吧!
操作符可分为算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符。
1算术操作符
+ - * / %
1)除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
2)对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3)%操作符的两个操作数必须为整数。返回的是整除之后的余数。
2 移位操作符
<< 左移操作符
>> 右移操作符
左移操作符移位规则:左边抛弃、右边补0 ,*右移又分为两种,算数移位和逻辑移位,区别如上图所示
*移位不移负数,其标准未定义
3位操作符
& / /按位与
| // 按位或
^ // 按位异或
注:他们的操作数必须是整数。*注意^和&的区别
4 赋值操作符
赋值操作符是一个很棒的操作符,他可以让你得到一个你之前不满意的值。也就是你可以给自己重新赋值。
intweight=120;//体重
weight=89;//不满意就赋值
doublesalary=10000.0;
salary=20000.0;//使用赋值操作符赋值。
赋值操作符可以连续使用,比如:
inta=10;
intx=0;
inty=20;
a=x=y+1;//连续赋值
这样的代码感觉怎么样那同样的语义,你看看:
x=y+1;
a=x;
这样的写法是不是更加清晰爽朗而且易于调试。
5赋值操作符
+= = *= /= %= >>= <<= &= |= ^=
这些运算符都可以写成复合的效果。
6单目操作符
! 逻辑反操作
- 负值 +正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
演示代码:
#include<stdio.h>
intmain()
{
inta=-10;
int*p=NULL;
printf("%d\n",!2);
printf("%d\n",!0);
a=-a;
p=&a;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int));
printf("%d\n",sizeofa);//这样写行不行?
printf("%d\n",sizeofint);//这样写行不行?
return0;
}
7关系操作符
> >= < <= !=(用于测试“不相等”==用于测试“相等”)
这些关系运算符比较简单,没什么可讲的,但是我们要注意一些运算符使用时候的陷阱。
*注意编程中将==和=写错
8逻辑操作符
&& 逻辑与 || 逻辑或
区分逻辑与和按位与
区分逻辑或和按位或
对于参加运算的数要换算为二进制进行运算,例如3 & 2的结果是2,过程如下:
3 & 2
=0111 & 0010
=0010
=2
9条件操作符
exp1?exp2:exp3
例子
b=(a>5?3:-3)