常见的C语言操作符总共有一下几种:
(1) 算术操作符
+,-, *, /, %
这里要提醒的是 % 它的两个操作数必须是整数,返回的是整除之后的 余数。
(2)位移操作符
<< 左移操作符
>> 右移操作符
值得注意的是,这里的左移相当于乘二;左移几位,就乘以相应的二的次方。左移的位数由右操作数决定,且右操作数必须为非负数。
右移操作符分为两种,算术移位和逻辑移位,
在逻辑移位中,右边丢弃,左边补零。算术移位中,左边补的是右边丢掉的数。
(3)位操作符
&, |,^.
注意 一定要区别这里的 & 和 && ,| 和 || 的区别
& : 按位与
| : 按位或
&& 逻辑与
|| 逻辑或
两个的执行结果是不同的,例如:
在二进制数中,
1 & 2----------->2;
1&& 2---------->0;逻辑与必须满足两边的条件同时为真整个结果采薇真。
1|2---------------> 3
1||2-------------->1;只需要一个条件为真,整个结果就为真。
^ :按位异或,一个数和0异或就是它本身。
在实际应用中,采用异或可以交换两个数的内容;
实验结果如下图所示:
(4)赋值操作符和、单目操作符、关系操作符
赋值操作符要注意的是从左往右赋值,得到一个自己满意的数值,同时,C语言中允许连续赋值。
在单目操作符中,~ 是对一个数的二进制按位取反
sizeof在数组中通常求的是数组的大小,但要注意的是,数组在传参过程中会降维,降维成一个指针,在32为平台下,指针大小为4字节。
(5) 关系操作符
这里需要说明的是,在判断两边的数是否相等,用的是“==”,切忌与赋值单个“=”混为一谈,这也是C语言中常遇到的错误之一。
(6)逻辑操作符
&&, ||
在C语言中,没有布尔类型,故0表示假,非零为真。
在上面的表达式中,a++为后置++;先使用后加一;所以先使用的话a为0;参与条件判定,在逻辑与中,只要一个条件不满足,就不执行后续操作;所以a=1,其余各位数字不变,即b=2,c=3,d=4;
同理,在逻辑或中,开始时a=0条件为假,往后执行,b为真,后续操作不用执行,故 a=1,b=3,c=3,d=4;
(7) 逗号表达式
有多个表达式,从左往右执行,结果是最后一个表达式的结果。
例如
int a =1;
int b = 2;
int c = (a>b,a=b+10,a,b=a+1);
c的结果为13,由最后一个表达式b=a+1的结果决定
(8)结构体
关键字struct引入结构体类型的定义,struct之后的标识符是结构体类型的名字,花括号里是结构体成员的说明。
通常访问一个结构体成员时,采用以下两种方式:
**.**结构体.成员名
-> 结构体指针 ->成员名