本节思维导图如下:
一、运算操作符:+-*/%
加减不做赘述主要介绍一下除法(/)和模(%)计算
1.除法
代码如下:
#include <stdio.h>
int main() //主函数
{
float a = 9 / 2; //都是整数将进行整数运算
printf("%d", a); //打印a
return 0;
}
没错,我们入轨直接计算9/2,得到的结果将是4,就算将类型改为浮点型,得到的结果是4.00000,依然是4 ,这是因为运算符一端是整数时,那么就执行整数运算,但是我们做如下更改:
#include <stdio.h>
int main() //主函数
{
float a = 9 / 2.0; //除号一端是小数才计算出小数
printf("%f", a); //打印a
return 0;
}
本次输出就是正常的4.5啦,OK,next one!~
二、位移操作符<< >>
代码如下:
#include <stdio.h>
int main()
{
int a = 2;
int b = a << 1;
//左移操作符,移动的是二进制位
printf("%d", b);
return 0;
}
移动的是二进制位,向左移动后再补位0得到的就是就是4。
三、位操作符&、^、|(略,以后会详细学习,赋值符&在scanf函数用到过)
四、赋值操作符=、+=、*=、&=、^=、<<=、>>=、|=(略,以后或详细学习)
五、单目操作符:只有一个操作数/双目即是两个操作数
1、!逻辑取反 //C语言中0为假,非0为真
代码如下:
#include <stdio.h>
int main()
{
if (a)
{
//如果a为真,做什么
}
if (!a)
{
//如果a为假,做什么
}
return 0;
}
2.-负值
3.+正值
4.&取地址
5.sizeof计算长度,这是操作符不是函数
6.~二进制按位取反
代码如下:
#include <stdio.h>
int main()
{
int a = 0;
printf("%d\n", ~a);
//二进制取反标识
return 0;
}
打印结果为-1,按二进制位是所有的二进制位,即是将所以0更换为1,32个0才是0,将所有bit位全变,就成为了32个1,也就是-1
补充:整数二进制存储方法(负整数)负整数在内存中是补码存储
原码
-1:100000000000000000000000000000001
反码
-1:11111111111111111111111111111110
补码
-1:11111111111111111111111111111111
而正整数存储时用什么码无所谓,因为正整数原码,反码,补码相同
7.(类型)强制类型转换
8.--前置,后置
9.++前置,后置
代码如下:
#include <stdio.h>
int main()
{
int a = 10;
int b = ++a;
printf("%d\n%d\n",b,a);
return 0;
}
++前置,所以是先加再使用,所以输出是11 11
还有一种是考试题目,但是本质上是错的,没有人会这么写,因为不同编译器跑出来可能不一样,代码如下:
#include <stdio.h>
int main()
{
int a = 1;
int b = (++a) + (++a) + (++a);
printf("%d\n", b);
return 0;
}
vs2022pro版本结果是12,其他版本未测试
10.*间接访问操作符(解引用操作符)
六、关系操作符< <= >= > != ==
七、逻辑操作符
&&逻辑与
||逻辑或
代码如下:
#include <stdio.h>
int main(void)
{
int a = 0;
int b = 1;
int c = a && b; //逻辑与
int d = a || b; //逻辑或
printf("%d\n%d\n", c, d);
return 0;
}
可以看到输出为 0 1,&&是一假便假,而||是一真便真
八、三目操作符
代码如下:
#include <stdio.h>
int main(void)
{
int a = 1;
int b = 3;
int max1 = 0;
int max2 = 0;
if (a > b)
{
max1 = a;
}
else
{
max1 = b;
}
max2 = a > b ? a : b;
printf("max1=%d\nmax2=%d\n", max1, max2);
return 0;
}
输出为3 3,说明了三目操作符的替代作用
九、逗号表达式
代码如下:
#include <stdio.h>
int main()
{
int a=0;
int b=3;
int c=5;
int d (a=b+2,c=a-4,b=c+2);
printf("%d",d);
return 0;
}
打印d,从左向右计算,计算结果是最后一个表达式的结果,所以是3
十、下标引用操作符,函数调用和结构成员[] () . ->
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d", arr[5]);
return 0;
}
printf ("%d\n",arr[5])//这一行用到的【】就是下标引用符
printf()//这里用到函数之后的()就是函数调用操作符
相关代码我会同步上传至码云,欢迎交流与学习:C语言学习之路: C语言学习当中做的相关代码 - Gitee.com