一文彻底搞清楚C语言的运算符
创作时间:
作者:
@小白创作中心
一文彻底搞清楚C语言的运算符
引用
1
来源
1.
https://developer.aliyun.com/article/1653486
运算符
1.算术运算符
主要用于基本的数学运算,包括:
- 加法运算符(+):用于求两个数的和。
- 减法运算符(-):一是用于求两个数的差。
- 乘法运算符(*):实现两个数的乘法运算,同样适用于不同数值类型的乘法计算。
- 除法运算符(/):当用于两个整数相除时,结果取整(舍去小数部分),
若除数或被除数至少有一个是浮点数时,则进行正常的浮点数除法运算,得到带有小数的结果。 - 求余运算符(%):也叫取模运算符,用于求两个整数相除的余数,运算符的操作数必须为整数。
void f1(void)
{
//算术运算符 + - * / %
int num1=9;
int num2=2;
printf("求和:num1+num2=%d\n",num1+num2);
printf("求差:num1-num2=%d\n",num1-num2);
printf("求积:num1*num2=%d\n",num1*num2);
printf("求商:num1/num2=%d\n",num1/num2);
printf("求余:num1%%num2=%d\n",num1%num2);
}
2.关系运算符
用来比较两个值之间的关系,运算结果是布尔值(真或假,在 C 语言中用 1 表示真,0 表示假),包含:
- 等于运算符(==):判断两个操作数是否相等。注意与赋值运算符 “=” 区分开。
- 不等于运算符(!=):判断两个操作数是否不相等。
- 大于运算符(>):判断左边的操作数是否大于右边的操作数。
- 小于运算符(<):判断左边操作数是否小于右边操作数。
- 大于等于运算符(>=):判断左边操作数是否大于等于右边操作数。
- 小于等于运算符(<=):判断左边操作数是否小于等于右边操作数。
void f2(void)
{
//关系运算符 > < >= <= == !=
int num1=13;
int num2=9;
printf("大于:num1>num2=%d\n",num1>num2);
printf("小于:num1<num2=%d\n",num1<num2);
printf("大于等于:num1>=num2=%d\n",num1>=num2);
printf("小于等于:num1<=num2=%d\n",num1<=num2);
printf("相等:num1==num2=%d\n",num1==num2);
printf("不等于:num1!=num2=%d\n",num1!=num2);
}
3.逻辑运算符
用于对布尔值进行逻辑运算,结果同样为布尔值,包括以下:
- 逻辑与运算符(&&):只有当两个操作数的值都为真(1)时,整个逻辑表达式的值才为真(1);只要有一个操作数为假(0),表达式的值就为假(0)。并且它具有短路特性,当计算到第一个操作数为假时,就不会再计算第二个操作数了。
- 逻辑或运算符(||):只要两个操作数中有一个为真(1),整个逻辑表达式的值就为真(1);只有当两个操作数都为假(0)时,表达式的值才为假(0)。它也有短路特性,当计算到第一个操作数为真时,就不会再计算第二个操作数了。
- 逻辑非运算符(!):用于对一个布尔值取反,若操作数为真(1),则取反后为假(0);若操作数为假(0),则取反后为真(1)。
void f3(void)
{
//逻辑运算符 && || !
int num1=13;
int num2=9;
printf("逻辑与:num1&&num2=%d\n",num1&&num2);
printf("逻辑或:num1||num2=%d\n",num1||num2);
printf("逻辑非:!num1=%d\n",!num1);
}
4.位运算符
对整数在二进制位级别上进行操作,主要包括:
- 按位与运算符(&):将两个整数对应的二进制位进行与运算,只有当两个对应位都为 1 时,结果位才为 1,否则为 0。
- 按位或运算符(|):把两个整数对应的二进制位进行或运算,只要两个对应位中有一个为 1,结果位就为 1。
- 按位异或运算符(^):对两个整数对应的二进制位进行异或运算,当两个对应位不同时,结果位为 1,相同时结果位为 0。
- 取反运算符(~):对一个整数的二进制位进行取反操作,即 0 变为 1,1 变为 0。
- 左移运算符(<<):将一个整数的二进制位向左移动指定的位数,右边空出的位用 0 填充。
- 右移运算符(>>):把一个整数的二进制位向右移动指定的位数,对于无符号数,左边空出的位用 0 填充;对于有符号数,如果是正数,左边空出的位用 0 填充,若是负数,左边空出的位用符号位(最高位)填充。
void f4(void)
{
//位运算符
int num1=13;
int num2=9;
printf("位与:num1&num2=%d\n",num1&num2);
printf("位或:num1|num2=%d\n",num1|num2);
printf("位异或:num1^num2=%d\n",num1^num2);
printf("位取反:~num1=%d\n",~num1);
}
5.赋值运算符
用于给变量赋值,包括:
- 最基本的是简单赋值运算符 “=”。
- 除此之外,还有复合赋值运算符:
- 加赋值运算符(+=)
- 减赋值运算符(-=)
- 乘赋值运算符(*=)
- 除赋值运算符(/=)
- 求余赋值运算符(%=)
- 左移赋值运算符(<<=)
- 右移赋值运算符(>>=)
- 按位与赋值运算符(&=)
- 按位或赋值运算符(|=)
- 按位异或赋值运算符(^=)
void f5(void)
{
//赋值运算符 = += -= *= /= %=
int num1=13;
int num2=9;
printf("赋值:num1=num2=%d\n",num1=num2);
printf("加法:num1+=num2=%d\n",num1+=num2);
printf("减法:num1-=num2=%d\n",num1-=num2);
}
6.三目运算符
也叫 条件运算符
语法格式为 表达式1? 表达式2 : 表达式3。
流程:先计算 表达式1 的值,如果其值为真(非 0),则整个条件表达式的值取 表达式2 的值;如果 表达式1 的值为假(0),则整个条件表达式的值取 表达式3 的值。
void f6(void)
{
//三目运算符
int num1=13;
int num2=9;
printf("三目运算:num1>num2?num1:num2=%d\n",num1>num2?num1:num2);
}
7.sizeof
sizeof 是 C 语言中的运算符,它属于单目运算符,用于获取数据类型或者变量所占用的字节数。
用于数据类型:
sizeof(数据类型),例如 sizeof(int),会返回 int 类型在当前编译环境下所占用的字节数。
在常见的 32 位编译环境中,sizeof(int) 的值通常为 4 字节;在 64 位编译环境下,有的编译器中 int 类型仍占 4 字节,不过这会因编译器和系统不同而有差异。
用于变量:
sizeof(变量名),比如已经定义了 int num; ,那么 sizeof(num) 就会返回变量 num 所占用的字节数,由于 num 是 int 类型,同样会返回对应编译环境下 int 类型所占用的字节数。
void f7(void)
{
//sizeof
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(char)=%d\n",sizeof(char));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(double)=%d\n",sizeof(double));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(long long)=%d\n",sizeof(long long));
}
是不是 sizeof 看起来有点像函数,因为使用了括号来包含操作对象,但它本质上不是函数,有着和函数明显不同的特点:
- 没有函数调用开销:函数调用时在运行阶段会有入栈、出栈等一系列操作开销,而 sizeof 是编译阶段就处理好的,不存在这样的运行时开销。
- 参数使用不同:函数的参数有实际的传值、传址等概念,并且参数类型需要严格匹配函数定义的参数类型要求等;而 sizeof 只是获取操作对象类型的字节数,操作对象可以是类型,也可以是变量,使用起来更灵活简单,不需要遵循函数参数那样严格的规则。
本篇就到这里啦,运算符还是很重要的哈,所以本篇记得那下哈!
热门推荐
打造专属影院:用投影机在家享受院线级观影体验
新版倚天屠龙记:祝绪丹演绎周芷若获观众认可
峨眉掌门周芷若:一场爱情与责任的艰难抉择
长春龙嘉机场巴士最新时刻表出炉!
长春龙嘉机场停车攻略:900个车位、20分钟车程,停车费最高80元
杭州官方发布寒假指南:助力学生学习生活两不误
一日三餐加健康零食,这样安排孩子寒假饮食
陈诗哥:用童话重新定义世界
研究证实:巧克力牛奶是运动后恢复的“黄金饮品”
解密运动不出汗:与免疫力无关的生理现象
鹿茸菇炖鸡汤的创意吃法:加入红枣与党参
鹿茸养生新姿势:从传统到创新,让健康触手可及
鹿茸菇:餐桌上的健康新宠
鹿茸:补阳第一药的秘密
微波炉煮鸡蛋,你get了吗?
微波炉煮鸡蛋:健康早餐新宠
冬季厨房神器:微波炉煮蛋技巧大公开
《走走停停》热映:高圆圆演绎接地气的中年女记者
20年演艺路:高圆圆用实力打破“花瓶”标签
专家推荐:四大方法提升孩子注意力
长春冰雪新天地游玩攻略:刺激的滑梯项目和地道的东北美食等你来打卡!
长春必打卡:鸡汤豆腐串,10人聚餐首选
灵璧石危机:从遍地可寻到一石难求
黄山奇石之美:不只是“猴子观海”,还有这些专业解读
亿年地质雕琢黄山石,花岗岩节理造就奇观
河南二龙山风景区游玩攻略:交通住宿美食一应俱全
校园霸凌背后的心理伤害如何疗愈?心理专家全面解析“霸凌之伤”
90%的校园欺凌本可预防,可是为何做不到?
释小龙新片《捉刀人》:票房口碑双丰收,武打动作片的正确打开方式
从童星到英雄:释小龙在《上甘岭》中的突破与转型