1.算术操作符
(1)前置和后置
这里 + 和 - 都是字面意思,没啥好讲的。我们上点难度—>区分一下前置 + +(- -)和后置+ +(- -)的不同
#include<stdio.h> int main() { int a = 100; //int b = a++; //后置++ int b = ++a; //前置++ printf("a=%d b=%d", a,b); return 0; }
运行结果:
前置
后置
怎么样,结果跟你想的一样吗。接下来让我们来分析一下产生这种差异的原因:
int b=++a=(++a);
a=a+1; b=a;
前置++:先++,后使用
int b=a++=(a++);
b=a; a++;
后置++:先使用,后++
前置- -和后置- -的底层逻辑是一样的。那么你们可以当做列子拿来练练手
(2)取膜(%)和除法(/)
日常生活中,我们用的乘法(×)和除法(÷)在C语言中可不是这样的哦。C语言的乘法是C语言的乘法是 * ,除号是 / ,这一点一定要牢记,不要搞混哦。
知道了它们的用法,接下来讲一讲注意的地方:
1./ 除号的两端如果都是整数,执行的是整数除法—保留整数部分
2./ 除号的两端至少一个树是浮点数,才执行的是浮点数的除法—日常生活中的除法
3.取膜–顾名思义就是取余数,它的两端操作数必须都为整数才可以
接下来就上代码看看:
1.
运行结果:
结论:
进行整数除法,无论如何结果都是整数部分,用浮点数来接收都不行
2.
运行结果:
结论:
两端至少有一个浮点数类型的数据,那么执行的就是浮点数除法
3.
运行结果:
结论:
取膜运算的两端操作数必须都为整形类型
2.移位操作符
这里涉及二进制,以后会讲的。持续关注我哦
3.位操作符
这里涉及二进制,以后会讲的。持续关注我哦
4.赋值操作符
a + = b <---->a = a + b
a - = b <----->a = a - b
a * = b <----->a = a * b
a / = b <----->a = a / b
注意:
=(赋值操作符)和= =(逻辑操作符)不一样-----以a = b 和 a = = b为例子解释一下
-----前者是把 b 的值赋给了 a ;后者是 a 和 b 相等
5.单目操作符
补充:
在C语言中,判断真假的方法是:0 为假,非0为真(一般是1),记住:这里是非0,负数也是真
(1)逻辑反操作( !)
逻辑反操作主要是用来打印条件为假的内容
如果想的打印真的内容-----if(a)
如果想的打印假的内容-----if(!a)
上代码:
运行结果:
(2)sizeof
这里需要把sizeof 和strlen两个比较来看:
1.sizeof—操作符无须引头文件—计算数据及其类型所占用空间的大小,单位是字节
2.strlen—库函数,头文件是<string.h>—计算字符串中 \0 前面的字符个数,单位是个
这里,我们不难发现:
当同时计算一个字符串(hello)的时候,strlen的结果是 5 ,没有算上 \0;而sizeof 的结果是 6 ,算上了 \0 所占用的空间
(3)强制类型转化
基本构成:(目标类型)变量
注意:( )不能少
运行结果:
结论:
如果一个浮点型的数据强制类型转化为整形—只取整数部分
6.关系操作符
这里重点前面都有讲过,可以翻上去看看
7.逻辑操作符
&&------两边同时为真,才为真,其他都为假
2. ||------两边同时为假,才为假,其他全为真(这里翻过坑的)
8.条件操作符
注意:
别看是问号(?),其实是情况为真的输出(这里翻过墙)
我们用这个来实现一个求两个数的最大值:
运行结果:
结论:
1.三目操作符跟 if self 的底层原理相似
2.基本构成:表达式1 ?表达式2 :表达式3
3.表达式2 相当于 if 成立后执行的语句;表达式3相当于 if 不成立 else 执行的语句
9.逗号表达式
这个我们以后再讲,记得持续关注我哦
10.下标引用、函数调用和结构成员
1.[ ]----用于数组
2.( )----函数调用
3.点(.)和 -> —用于结构体
这一部分的大多数内容详细讲解我都在【菜鸟逆袭记】之初识C语言中讲过,不清楚的小伙伴,可以移步去看一看