C语言中操作符合集

1. 算术操作符:+ 、-、*、/、%

👀算术操作符中 +、 -、 * 、/ 都是比较熟悉的,主要是 %(取模) 对少部分人来说不太熟悉 。% 得和 / 一起理解, / 计算的是两个数相除之后的商,而 % 计算的则是两数相除之后的余数

例子:

int main(){
	int a= 8;
	int b= 2;
	printf("%d\n",a/b); 4 // 8 / 2 = 4
	printf("%d\n",a%b); 0 // 8 % 2 = 4....0
	return 0;
}

/ 和 %应用

  1. 水仙花数
int is_flower_number(int i) {
	int temp = i;
	int count = 1;
	int sum = 0;
	//判断该数有几位
	while (temp / 10) {
		count++;
		temp /= 10;
	}
	temp = i;

	//判断是否符合水仙花树的条件
	while (temp) {
		sum += pow(temp % 10, count);
		temp /= 10;
	}
	return sum == i;
}
int main() {
	int i = 0;
	//生成0~100000之间的数
	for (i = 0; i <= 100000; i++) {
		//判断该数是否为水仙花数
		if (is_flower_number(i)) {
			printf("%d ", i);
		}
	}
	return 0;
}
  1. 将一个正整数的每一位按顺序或者逆序打印
//顺序打印
void Print2(int n) {
	if (n > 9) 
		Print(n / 10);
	printf("%d ", n % 10);
}
//逆序打印
void Print1(int n) {
	printf("%d ", n % 10);
	if (n > 9) 
		Print(n / 10);
}

int main(){
	int n=0;
	scanf("%d",&n);
	Print2(n);
	Print1(n);
	return 0;
} 

3. 移位操作符

>>: 右移操作符
<<: 左移操作符
注:移位操作符的操作数只能是正整数,对于负数则是标准未定义!

移位规则:

  1. 左移操作符
  • 左边抛弃、右边补0

例子

//代码实现
#include <stdio.h>
int main()
{
 int num = 10;
 int n = num<<1;
 printf("n= %d\n", n);
 printf("num= %d\n", num);
 return 0;
}

运行结果
在这里插入图片描述
分析:在这里插入图片描述

  1. 右移操作符
  • 逻辑左移:左边用0填充,右边丢弃
  • 算术右移:左边用符号位补充,右边丢弃
//代码实现
#include <stdio.h>
int main(){
 	int num = -1;
 	int n = num>>1;
	printf("n= %d\n", n);
 	printf("num= %d\n", num);
 	return 0;
}

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

警告⚠️:对于移位运算符,不要移动负数位,这个是标准未定义的。

4. 位操作符

  1. &(按位与):二进制对应位两个都为1则为1,否则为0。
  2. | (按位或):二进制对应位两个都为0则为0,否则为1。
  3. ^(按位异或):二进制对应位相同则为0,不同则为1。
  4. ~(按位取反):二进制位对应的0变1,1变0。
    注:他们的操作数必须是整数
//代码实现
#include <stdio.h>
int main(){
 	int num1 = -3;
 	int num2 = 5;
 	printf("%d\n", num1 & num2);
 	printf("%d\n", num1 | num2);
 	printf("%d\n", num1 ^ num2);
 	printf("%d\n", ~0);
 	return 0;
}

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

5. 赋值操作符

=、+=、-=、/=、*=、%=、>>=、<<=

a += b ---> a = a + b
a -= b ---> a = a - b
a /= b ---> a = a / b
a *= b ---> a = a * b
a %= b ---> a = a % b
a >>= b ---> a = a >> b
a <<= b ---> a = a << b 

6. 单目操作符

!、++、--、&、*、+、-、~ 、sizeof、(类型)
单⽬操作符的特点是只有⼀个操作数

符号!++*+-~sizeof(类型)
含义逻辑取反前置、后置++前置、后置–间接访问操作符(解引用操作符)正值负值二进制位取反操作数的类型长度(以字节为单位)强制类型转换

7. 关系操作符

>、 <、 >=、 <=、 ==、 !=

8. 逻辑操作符

  1. &&(逻辑与/短路与):两边为真即为真,否则为假。
  2. ||(逻辑或/短路或): 两边为假才为假,否则为真。

9. 条件操作符

exp1 ? exp2 : exp3
若exp1为真则执行exp2,否则执行exp2

//代码实现
int main(){
	int a = 3;
	int b = 5;
	int c = (a > b) ? a : b;
	printf("%d\n", c);
}

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

10. 逗号表达式

1 exp1, exp2, exp3, …expN

逗号表达式,就是⽤逗号隔开的多个表达式,,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。

例子:

int a = 1;
int b = 2;
int c = (a>b, a=b+10, a, b=a+1); //13

11. 下标访问操作符[ ]、函数调用操作符( )

  • 下标访问操作符[ ]

操作数:⼀个数组名 + ⼀个索引值
在这里插入图片描述

  • 函数调用操作符( )

接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。
在这里插入图片描述

12. 结构成员访问操作符

C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类
型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要
名字、年龄、学号、⾝⾼、体重等;描述⼀本书需要作者、出版社、定价等。C语⾔为了解决这个问
题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。

  • 结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数

使用方式:结构体变量.成员名
使用方式:结构体变量.成员名

  • 结构体成员的间接访问
    有时候我们得到的不是⼀个结构体变量,⽽是得到了⼀个指向结构体的指针。

在这里插入图片描述
使⽤⽅式:结构体指针->成员名


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值