C语言操作符知识总结
一、算数操作符
加(+)、减(-)、乘(*)、除(\)、取余(%)
1、除了%操作以外,其他几个操作符可以作用于整数和浮点数;
2、对于\操作符,如果两个操作符都为整数,执行整数除法,只要有浮点型就执行浮点型除法;
3、%操作符的两个操作数必须为整数,返回的是整除之后的余数。
二、位移操作符
1、左位移操作符(<<)
位移规则:左边抛弃,右边补0
2、右位移操作符(>>)
位移规则:
(1)、逻辑位移:左边用0填充,右边丢弃;
(2)、算数位移:左边用原值的符号填充,右边丢弃;
注意:进行位移操作后,不改变原值的大小
例如:n>>1之后,n的值不变,只有n=n>>1;n的值才会发生变化;
警告:对于位移运算符,不要位移负数位,这个是标准未定义的
int num = 10;
num >> -1;
三、位操作符
& :按位与(对应的二进制数均为1时结果位为1 ,否则为0)
| :按位或(对应的二进制位有一个为1时,结果位就为1,两个都是零时结果为零)
^ : 按位异或(对应二进制位相同为0,不同为1)
注意:他们的操作数必须是整数
#include <stdio.h>
int main()
{
int num1 = 1;
int num2 = 2;
num1 & num2;
num1 | num2;
num1 ^ num2;
return 0;
}
四、赋值操作符
赋值操作符可以让你得到一个你之前不满意的值,也就是可以重新赋值
例如:
int wight = 180;
wight = 89;重新赋值
复合赋值符
+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=;
例如:
int x = 10;
x = x + 10;
x += 10;
五、单目操作符
!:逻辑取反
-:负值
+:正值
&:取地址
sizeof:操作符的类型长度(以字节为单位)
关于sizeof:
int a[5];
sizeof (a) = sizeof a;
int s = 3;
int a = 10;
sizeof (s = a + 3);
printf ("%d",s);
用于求变量(类型)所占字节大小
~:对一个数的二进制按位取反
- -:前置、后置- -
++:前置、后置++
*:间接访问操作符(解引用操作符)
(类型):强制类型转换
六、关系操作符
>、<、>=、<=、!=(用于测试不相等)、==(用于测试相等)
警告:在编程的过程中==和=不小心写错,会导致程序结果错误
七、逻辑操作符
逻辑与(&&)、逻辑或(||)
区分逻辑与和按位与:
------>
----->
区分逻辑或和按位或
------->
------>
八、条件操作符
exp1 ? exp2 : exp3;
若exp1为真,则结果为exp2;
若exp1为假,则结果为exp3;
if (a > 5)
{
b = 3;
}
else
{
b = -3;
}
(a > 5) ? 3 : -3;
九、逗号表达式
逗号表达式就是用逗号隔开的多个表达式
逗号表达式从左向右依次执行,整个表达式的结果是最后一个表达式的结果。例如:
int a = 3
int b = 2
int c = (a>b, a=b+10, a, b=a+1)
十、下标引用、函数调用和结构成员
1、操作数:一个数组名+一个索引值
int arr[10];
arr[9] = 10;
2、函数调用操作符
接受一个或者多个操作数,第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
3、访问一个结构体的成员
. : 结构体 . 成员名
-> : 结构体指针 -> 成员名
struct Stu
{
char name[10];
int age;
char sex[5];
double score;
};
int main()
{
struct Stu stu;
struct Stu *pstu;
stu.age = 20;
pstu -> age = 20;
}