C语言操作符详解

本文详细介绍了C语言中的各种操作符,包括单目、双目、三目、关系、逻辑、位操作符,以及算术、赋值、比较等,并通过实例展示了如何使用它们进行数值运算和条件判断。
摘要由CSDN通过智能技术生成

操作符有:

 单目操作符,双目操作符,三目操作符
 又分为算术操作符,关系操作符, 条件操作符, 逻辑操作符, 位操作符, 自增操作符,赋值操作符

双目操作符

 有 2 个操作数的运算符称为双目操作符
 关系操作符,逻辑操作符, 位操作符,赋值操作符,算术操作符

关系操作符

  > (大于运算符); < (小于运算符); >= (大于等于运算符) ; <= (小于等于运算符); == (相等运算符); != (不相等运算符)
非0全为真,只有 0 为假,当一个函数的返回值只需要判定真和假,可以使用布尔类型(bool)作为返回值,因为布尔类型(bool)只有 2 种值,真 和 假,使用布尔类型(bool)需要调用头文件 stdbool.h,bool类型是 C99 出现的
 关系操作符得到的值 只有 真 (1)和 假 (0)

a = 3;
b = 6;
1. a > b; // a 为左操作数,b 为有操作数,有 2 个操作数,为双目运算符
// 3 > 6 假,表达式为 0
3. a < b; // 3 < 6 真,表达式为 1
4. a >= b; // C语言中大于等于的表示方法与数学中的表示方法有所不同
5. a <= b;
6. a == b; // 这里要注意相等运算符要 2 个等号, 一个等号是赋值操作
7. a = b; // 赋值,将 b 赋给 a,这赋值运算符
8. a != b;

逻辑操作符

  !:逻辑取反运算符(改变单个表达式的真假)
注意:逻辑取反运算符为单目操作符,我这里为了方便一点就写在了双目操作符里

 &&: 与运算符 就是并且的意思(全为真,表达式才为真)
注意:左操作数为假时,右操作数就不执行了
 ||: 或运算符,就是或者的意思(只要一个为真,表达式就为真)
注意:左操作数为真时,右操作数就不执行了
与操作符的图形解释
与操作符的图形解释
或操作符的图形解释
在这里插入图片描述

位操作符

 位操作符有:左移运算符(<<),右移运算符(>>),按位或运算符(|),按位与运算符(&),按位异或运算符(^),按位取反运算符(~),这些运算符都是对二进制进行操作
 移位又分为算术移位和逻辑移位
注意:按位取反运算符为单目操作符,我这里为了方便一点就写在了双目操作符里

#include <stdio.h>

int main()
{
	short a = 3; // 0000 0000 0000 0011
	short b = 5; // 0000 0000 0000 0101
	// 最高位为 0 为正数
	// 最高位为 1 为负数
	printf("%hd<<%hd=%hd\n", a, b, (a<<b));// 左移操作
	// 最高位保持不变,剩余的全部向左移动 b 位,在后面补零
	// 0000 0000 0000 0011 移动1位 0000 0000 0000 0110 移动2位 0000 0000 0000 1100 移动3位 0000 0000 0001 1000,后面我就不演示了,相信大家都已经明白了
	//再以负数举个例: -1: 1000 0000 0000 0001
	// 移动1位 1000 0000 0000 0010 移动2位 1000 0000 0000 0100
	printf("%hd>>%hd=%hd\n", a, b, (a>>b)); //右移操作
	printf("%hd|%hd=%hd\n", a, b, (a|b));// 只要对应的二进制位有1个及以上的 1,该位就为 1
	printf("%hd&%hd=%hd\n", a, b, (a&b));// 只有对应的二进制位都为 1 时,该位才为 1
	printf("%hd^%hd=%hd\n", a, b, (a^b));// 只有对应的二进制位不相同时,该位才为 1
	printf("~%hd=%hd\n", a, ~a); //取反运算符是对补码进行操作,最高位保持不变,其余位由 1变0, 0变1
	//正数的原码,反码,补码都相同
	//负数的反码是原码取反(最高位符号位不变),补码是反码加1得到的
	return 0;
}

这是上面程序的运行结果,如果还是不明白的话,可以用计算机看对应的二进制数,一个一个对
在这里插入图片描述
这是电脑自带的计算机,我这的快捷键是 Fn+F12,找不到的话也可以直接搜索
在这里插入图片描述

赋值运算符

 在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值
 赋值操作符 = 是⼀个随时可以给变量赋值的操作符,赋值操作符比较简单,这里我就不解释了
c = b = a+3;//连续赋值,从右向左依次赋值的

算术操作符

+:用来完成加法的运算符
-:用来完成减法的运算符
*:用来完成乘法的运算符
/:用来完成除法的运算符
%:用来完成取模运算的运算符

#include <stdio.h>

int main()
{
	int a = 5;
	int b = 3;
	printf("%d+%d=%d\n", a, b, a + b);
	printf("%d-%d=%d\n", a, b, a - b);
	printf("%d*%d=%d\n", a, b, a * b);

	printf("%d/%d=%d\n", a, b, a / b);
	printf("%d/%d=%d\n", a, b, a*1.0 / b);// 小数默认就是双精度浮点型(double),单精度浮点型(float)要在后面加f
	
	printf("%d/%d=%f\n", a, b, a / b);
	printf("%d/%d=%f\n", a, b, a * 1.0f / b);
	//如果运算数这没有小数,那么会进行整数除法
	//如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时C语⾔就会进⾏浮点数除法
	printf("%d/%d=%lf\n", a, b, a / b);
	printf("%d/%d=%lf\n", a, b, a*1.0 / b);

	printf("%d%%%d=%d\n", a, b, a % b);//取模运算符只能对整型取模,符号与操作数的正负一致
	return 0;
}

这是运行结果
在这里插入图片描述

三目操作符

条件操作符

exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算,计算的结果是整个表达式的结果

// 这是找最大值的代码程序
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int m = a > b ? a : b;
	printf("%d\n", m);
	return 0;
}

这是运行结果
在这里插入图片描述

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值