说起操作符大家都不陌生,从我们最初的 + - c * / 加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。
一:算数运算符
+ - * / %(取模)
这里不细讲加减乘,加减乘和数学是一样的,这里只谈 / %。
二:移位操作符
<< (左移操作符) >> (右移操作符)---移动是二进制哟(移的是补码)(在32比特位下移动)
有些编译器不支持移动负数,移动后不改变自身
三:位操作符 (计算的是二进制)
& (相同为 1 即为 1 ,有 0 则为 0 )
| (有 1 则为 1 ,两个相同时则为0)
^ (相同为 0 ,相异为 1 )
① & | ^ 计算
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int x1, x2, x3;
// a 的二进制 00000000 00000000 00000000 00000001
// b 的二进制 00000000 00000000 00000000 00000010
x1 = a & b;
// a 的二进制 00000000 00000000 00000000 00000001
// b 的二进制 00000000 00000000 00000000 00000010
// x1 的二进制 00000000 00000000 00000000 00000000
x2 = a | b;
// a 的二进制 00000000 00000000 00000000 00000001
// b 的二进制 00000000 00000000 00000000 00000010
// x2 的二进制 00000000 00000000 00000000 00000011
x3 = a ^ b;
// a 的二进制 00000000 00000000 00000000 00000001
// b 的二进制 00000000 00000000 00000000 00000010
// x3 的二进制 00000000 00000000 00000000 00000011
//x1 = 0,x2 = 3,x3 = 3
printf("x1 = %d,x2 = %d,x3 = %d\n", x1, x2, x3);
return 0;
}
②不能创建变量(第三个变量),实现两个数的交换
#include<stdio.h>
//方法一:
//int main()
//{
// int a = 1;
// int b = 2;
// a = a + b;
// b = a - b;
// a = a - b;
// printf("a = %d,b = %d\n", a, b);
// return 0;
//}
//当数字很大时就合适了
//方法二:
int main()
{
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b; //看成 b = ( a ^ b ) ^ b,这里 b 和 b就可以消除
a = a ^ b; //这里其实就变成 a = ( a ^ b ) ^ a,这里 a 和 a就可以消除
printf("a = %d,b = %d\n", a, b);
return 0;
}
四:赋值操作符( = )
+= -= *= /= %= >>= <<= &= |= ^=(复合赋值符)
#include<stdio.h>
int main()
{
float weight = 55.5f;//加 f 的目的使区分double
double high = 1.78;
int age = 18;
return 0;
}
//记住 C语言的 = 和 == 是两码事
// a = 1 赋值运算符
// a == 1 是判断 a 是否等于1
五:单目操作符
六:关系操作符
> >= < <= != ==
这里记住 a = 1 赋值运算符 a == 1 是判断 a 是否等于1
七:逻辑操作符
&& (并且的意思) || (或者的意思)
#include<stdio.h>
//int main()
//{
// int a = 0;
// int b = 0;
// if (a == 0 && b == 0)
// {
// printf("hehe\n");
// }
// else
// {
// printf("haha\n");
// }
// return 0;
//}
//打印出hehe
int main()
{
int a = 0;
int b = 0;
if (a == 0 || b == 1)
{
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
//打印出hehe
八:条件操作符
( 语句 1 ? (语句 2 :语句 3)) 如果语句1为真就执行语句2,否则执行语句3
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = a > b ? a : b;
//如果 a 大于 b 就把 a 的值赋给 c,否则就把 b 的赋给 c
printf("%d\n", c);
return 0;
}
//打印出:1
九:逗号表达式
逗号表达式,就是用逗号隔开的多个表达式。
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
#include<stdio.h>
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);
//这里 a > b 没有什么关系,a = b + 10 = 2 + 10 = 12
//这里 a 没有什么关系,b = a + 1 = 12 + 1
//最后 c = b
printf("%d\n", c);//打印出:13
return 0;
}
十:下标引用(已讲),函数调用(已讲)和结构体成员
下标引用:[ ]
函数调用:函数名();
结构体成员: . ->(这里不细讲,后面会详细介绍)
关于操作符的优先级图片
不知不觉就到了尾声呢,咱们第六章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。