C语言 -- 操作符

本文详细介绍了C语言中算数操作符如加减乘除取余,移位操作符包括左移和右移,以及位操作符按位与、或、异或。此外,还涵盖了赋值操作符和单目操作符,以及关系和逻辑操作符的应用实例。通过实例演示,帮助读者掌握这些核心概念并应用于实际编程中。
摘要由CSDN通过智能技术生成

算数操作符

取余
+-*/%

1.除了取余%操作符外,其他的操作符可以作用于整数和浮点数;
2.对于除/操作符,如果两个操作数都为整数,则执行整数除法;而操作数只要有浮点数执行的就是浮点数除法;
3.取余%操作符的两个操作数必须为整数,返回的是整除之后的余数。

#include<stdio.h>

void main()
{
	int a = 3, b = 2;
	double c = 1.5;

	printf("a + b = %d\n", a + b);   //5
	printf("a - b = %d\n", a - b);	 //1
	printf("a * b = %d\n", a * b);	 //6
	printf("a / b = %d\n", a / b);	 //1
	printf("a %% b = %d\n", a % b);	 //1
									  
	printf("a + c = %.2f\n", a + c);  //4.50
	printf("a - c = %.2f\n", a - c);  //1.50
	printf("a * c = %.2f\n", a * c);  //4.50
	printf("a / c = %.2f\n", a / c);  //2.00
}

移位操作符

左移右移
<<>>

左移操作符移位规则:

左边抛弃,右边补0;

右移操作符移位规则:
右移运算分为两种:

1.逻辑移位,左边用0填充,右边丢弃;
2.算术移位,左边用原该值的符号位填充,右边丢弃。
如果操作数是无符号数即是逻辑移位,如果操作数是带符号数,是算术移位。

代码示例:

正整数a左移n位的值为(a*(2^n));
正整数a右移n位的值为(a/(2^n));

#include<stdio.h>

void main()
{
	int a = 10;
	//0000 0000 0000 0000 0000 0000 0000 1010
	//0000 0000 0000 0000 0000 0000 0010 1000 -- 左移
	//0000 0000 0000 0000 0000 0000 0000 0010 -- 右移
	printf("%d\n", a << 2); //40
	printf("%d\n", a >> 2); //2

	//算数右移
	int b = -10;
	//补码1111 1111 1111 1111 1111 1111 1111 0110
	//补码1111 1111 1111 1111 1111 1111 1101 1000 -- 左移
	//原码1000 0000 0000 0000 0000 0000 0010 1000 -- 左移
	//补码1111 1111 1111 1111 1111 1111 1111 1101 -- 右移
	//原码1000 0000 0000 0000 0000 0000 0000 0011 -- 右移
	printf("%d\n", b << 2); //-40
	printf("%d\n", b >> 2); //-3
}

位操作符

按位与按位或按位异或
&|^

其操作数必须位整数

代码示例:

#include<stdio.h>

void main()
{
	int num1 = 1;
	int num2 = 2;
	//1--0000 0000 0000 0000 0000 0000 0000 0001
	//2--0000 0000 0000 0000 0000 0000 0000 0010

	int x = num1 & num2; //0
	int y = num1 | num2; //3
	int z = num1 ^ num2; //3
	printf("%d  %d  %d", x, y, z);
}

赋值操作符

符号表达式含义
=a = 10将10赋给a
+=a += 10a = a+10
-=a -= 10a = a-10
*=a *= 10a = a*10
/=a /= 10a = a/10
%=a %= 10a = a%10
>>=a >>= 10a = a>>10
<<=a <<= 10a = a<<10
&=a &= 10a = a&10
|=a |= 10a = a|10
^=a ^= 10a = a^10

单目操作符

符号含义符号含义
逻辑取反~按位取反
-负值- -自减
+正值++自增
&取地址*间接访问操作符(解引用操作符)
(类型)强制类型转换sizeof操作数的类型长度(以字节为单位)

注意:sizeof是操作符,可以求变量(类型)所占空间的大小

前++或前- -后++或后- -
先自增或自减再进行其他运算先进行其他运算后再自增或自减

关系操作符

符号含义
>大于
>=大于等于
<小于
<=大于
!=用于测试“不相等”
==用于测试“相等”

在编程过程中注意==与=的使用

逻辑操作符

逻辑与逻辑或
&&||

对于按位操作符和逻辑操作符要加以区分
逻辑操作符会返回一个布尔值

代码示例:

#include<stdio.h>

void main()
{
	printf("1&&2 = %d\n", 1 && 2); //1
	printf("1&2 = %d\n", 1 & 2); //0

	printf("1||2 = %d\n", 1 || 2); //1
	printf("1|2 = %d\n", 1 | 2); //3
}

逻辑与&&与逻辑或||都是短路操作符;
当逻辑与&&的第一个操作数为假时便不再往后执行,结果必为假;
当逻辑或||的第一个操作数为真时便不再往后执行,结果必为真。

代码示例:

#include<stdio.h>

void main()
{
	int i = 0, a = 0,b = 2,c = 3, d = 4;
	i = a++ && ++b && d++;
	printf("i=%d\n", i); //0
	printf("a=%d\n", a); //1
	printf("b=%d\n", b); //2
	printf("c=%d\n", c); //3
	printf("d=%d\n", d); //4
}

条件操作符

exp1 ? exp2 : exp3
当exp1为真时,结果为exp2;否则结果为exp3
#include<stdio.h>

void main()
{
	int a = 6;
	int b;

	if (a < 5)
	{
		b = 3;
	}
	else
	{
		b = -3;
	}
	printf("b = %d\n", b); //-3

	//上述if-else语句可以用条件操作符实现
	int c;
	c = (a < 5) ? 3 : -3;
	printf("c = %d\n", c); //-3
}

逗号表达式

exp1, exp2, …, expN

用逗号隔开多个表达式,从左向右依次执行;
整个表达式的结果时最后一个表达式的结果。

代码示例:

#include<stdio.h>

void main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);
	printf("c = %d\n", c); //13

	int d = -3;
	if (a = b + 1, c = a / 2, d > 0) //d<0,所以执行else
	{
		printf("真\n");
	}
	else
	{
		printf("假\n"); //将会输出这句
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值