- 前言
- 一、算数操作符
- 二、移位操作符
- 三、位操作符
- 四、赋值操作符
- 五、单目操作符(只有一个操作数)
- 六、关系操作符
- 七、逻辑运算符
- 八、条件运算符(三目操作符)
- 九、逗号表达式
- 十、下标引用和函数调用和结构成员
- 总结
前言
C语言是非常灵活的,因为c语言有着丰富的操作符,使用起来就比较灵活,我们现在就来认识一下这些操作符,学习起来家人们!!!
一、算数操作符
+ - * / % 加 减 乘 除 取模(求余)
加减乘跟数学一样,但 / 和 % 要重点注意一下
#includeint main() { int a = 7 / 2;//除法表达式 int b = 7 % 2;//取模表达式 printf("%dn", a);//打印结果是3 printf("%dn", b);//打印结果是1 return 0; }
7 % 3 是求余,7 % 3的余数是1,所以打印1,这边要注意取模表达式两边必须是整数
7 / 2 在数学中运算应该等于3.5,为什么打印3呢,因为表达式两边都是整型类型打印出只能是整型,如果要打印小数结果必须表达式两边至少一边变浮点数(小数)并且数据类型和输出格式也得变成浮点类型;正确写法如下
#include二、移位操作符int main() { //2这边改成2.0,当然你也可以把7改成7.0,一样的 //int类型也要改成浮点类型 float a = 7 / 2.0; int b = 7 % 2; //%d整型的格式改成浮点类型格式%f //注意这边我们要的值是3.5;是一位小数所以得改成%.1f //两位小数就改成%.2f,不该的话程序会输出double类型打印3.500000 printf("%.1fn", a);//打印3.5 printf("%dn", b);//打印1 return 0; }
涉及到二进制运算,学到在讲,不好意思啦
>> << 右移操作符 左移操作符三、位操作符
也涉及二进制运算,还没学到,不好意思啦
& ^ | 按位与 按位异或 按位或四、赋值操作符
= += -= *= /= &= ^= |= >>= <<=
赋值的 = 要特别注意一下,代码解释
#includeint main() { int a = 0;//初始化 a = 20;//赋值,一个 = 叫赋值 a == 3;//两个 = 才叫等于 return 0; }
那 += 和其他符号加=,是什么意思呢,演示一个 +=,和 -=,我们就明白了,代码演示:
int main()
{
int a = 0;//初始化
a = 20;//20赋值给a
a = a + 3;//打印 23
a += 3;//也可以写成这样与上面那种写法是一样的打印结果也是23
//你可以理解为a + 3
a = a - 3; //打印17
a -= 3;//和上面写法结果一样
return 0;
}
其他符号加= 意思跟上面两个差不多get到了吗家人们
五、单目操作符(只有一个操作数) ! - + &
逻辑反操作 负值 正值 取地址
sizeof
操作符的类型长度(以字节为单位)
~
对一个数的二进制按位取反(还没学到,学到说,不好意思啦)
--
前置、后置--
++
前置、后置++
*
间接访问操作符(解引用操作符)
(类型)
强制类型转换
讲第一个 !逻辑反操作前我们得先补充一个知识点
C语言中 0 表示假,非 0 表示真
1.逻辑反操作符 !,代码演示:
如果 if 的把 ! 去掉就打印不出来了,因为为假程序不进入打印;
判断条件 !a 不改的话,改变a的值也是不等于0也是一样的打印不出来,因为a如果为真,
判断条件加 ! 意思就变了,真的变成假的,就不打印了
2.负值 - 和正值 +
跟数学一样如果一个正数加上负号则变负值,而一个负数加上一个负号就变正数,
而正负数加上正号不会发生改变,代码演示如下:
#includeint main() { int a = -1; int b = -a;//a=-1,但加了负号就发生了改变 printf("%dn",b); return 0; }
3. 取地址符 &
涉及到指针后面说
4. sizeof 操作符的类型长度(以字节为单位)
sizeof 一个测量长度的关键字同时他还是单目操作符,sizeof 写法如图:
a为4个字节,是因为a变量的类型是int,而int类型是4个字节,所以打印4
整型数组用sizeof测量大小求法:
这里要特别注意求数组元素个数的求法
5. - - 和 ++
i++; //后置++,先使用,后++ ++i; //前置++,先++,后使用 i--; //后置--,先使用,后-- --i; //前置--,先--,后使用
i++(后置++) 代码演示:
#includeint main() { int a = 10; int b = a++;//后置++,先使用,后++ //先把a=10的值赋给b,b就为10,然后再进行a+1的值11赋返回给a,a就为11 //也就是先 int b = a;然后再 a=a+1 printf("%dn",b);//打印10 printf("%dn",a); //打印11 return 0; }
++i(前置++) 代码演示:
int main()
{
int a = 10;
int b = ++a;//前置++,先++,再使用
//先把a = 10加1,在把 a = 10的值加1的值赋给b
//也就是先 a = 10+ 1,然后再 b = a
printf("%dn", b);//打印11
printf("%dn", a); //打印11
return 0;
}
上面的代码说明后置 i++ 和前置 ++i 的意思,后面两个后置 i- -和前置 - -i,也是一样的这边就不过多演示了
6.(类型)强制类型转换
可以把类型强制转换成另一种,代码演示:
#include六、关系操作符int main() { //3.14本质是浮点类型,在他前面加个(int类型)就可以强制转换成int类型 //注意是要在转换值前面加(类型),括号里面填你想要转换的类型 int a = (int)3.14; printf("%dn", a); //3.14 字面浮点数,编译器会默认理解为double类型 }
> 大于 >= 大于等于 < 小于 <= 小于等于 != 用于测试“不相等”(不等于) == 用于测试“相等”(等于)
关系操作符跟数学一样,但我们要特别注意一下 ==,和赋值 = ,代码演示:
#include七、逻辑运算符int main() { int a = 0;//a初始化为 0 a = 10; //10赋值给 a //判断a等于3,而a是为10的,不等于3,判断条件为假,不执行下面打印 hehe //假如我们把a == 3,换成 a = 3,变成赋值就可以执行打印 hehe //因为 3 赋值给 a,判断 a为 3,为真,执行打印 hehe if (a == 3) { printf("hehen"); } return 0; }
&& || 逻辑与 逻辑或
1 .逻辑与 &&
逻辑与就是 && 两边必须都为真才真,一个为假则假,代码写法演示:
代码中a,b,一假一真,判断为假,不执行下面语句,不打印
2.逻辑或 ||
八、条件运算符(三目操作符)逻辑或就是 || 两边的表达式,只要一个为真就执行下面语句,两边都为假才为假,代码演示:
>代码中,b为真,a为假,b真所以执行下面语句
exp1 ? exp2 : exp3 表达式1 ?表达式2 :表达式3
九、逗号表达式上图:
图中的代码 a>b 为假,假的话执行第三个表达式 b 的值也就是 20,所以整个表达式结果为 20;
如果改一下 a=30;b=10;的话 a>b 就为真,真的话执行第二个表达式 a 的值 30;所以整个结果为30
证明条件操作数可以求两个数的较大值
exp1, exp2, exp3, ...expn 表达式1,表达式2,表达式3,...表达式n
十、下标引用和函数调用和结构成员逗号表达式就是逗号隔开的一串表达式
特点是:从左向右依次计算,整个表达式的结果是最后一个表达式的结果:
代码运行可以看到他打印逗号隔开的最后一个表达式结果,所以我们这边需要重点注意最后一个表达式结果,但 c=a+b为10,是前面 b = 7,a初始化为3算出来的;
注意:用逗号表达式时要加括号
[] () . ->
1. [ ]下标引用操作符
图中的 arr 和 10 就是 [ ] 的操作数
注意:定义数组和访问数组要区别开
数组下标从0开始算
2.()函数调用操作符
删除括号就不是函数了,比如上面的sizeof a;就说明sizeof不是函数
3、 . 和 -> 学到说sorry啦
总结不知不自觉操作符这篇又码了4000多个字,其中我想解释的通俗易懂点,所以解释会很长,用手机看的家人辛苦了,愿我们一起拼搏,你一定能成为你想要成为的人!!!



