12-操作符

12-操作符

一、算术操作符

+(加) -(减) *(乘) /(除,即商) %(取模,即余数)
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a;
	a = 9 / 2;
	printf("a = %d\n\n", a);

	float b;
	b = 9 / 2;
	printf("b = %f\n\n", b);

	int c;
	c = 9 % 2;
	printf("c = %d\n\n", c);

	return 0;
}

image-20241204141252844

二、移位操作符

<<(左移) >>(右移)

【注】移位操作符,移动的是二进制位!!!

image-20241204142534369

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 2;
	int b = a << 1;
	printf("b = %d\n", b);

	return 0;
}

image-20241204142352458

三、位操作符

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

四、赋值操作符

= (赋值) +=(加等) -=(减等) *=(乘等) /=(除等) &=(与等) ^=(异或等) |=(或等) >>=(右移等) <<=(左移等)
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a1 = 2;
	a1 = a1 + 5;
	int b1 = 2;
	b1 += 5;
	printf("a1 = %d\t b1 = %d\n\n", a1, b1);

	int a2 = 2;
	a2 = a2 - 3;
	int b2 = 2;
	b2 -= 3;
	printf("a2 = %d\t b2 = %d\n\n", a2, b2);

	int a3 = 2;
	a3 = a3 % 3;
	int b3 = 2;
	b3 %= 3;
	printf("a3 = %d\t b3 = %d\n\n", a3, b3);

	return 0;
}

image-20241204160244177

五、单目操作符

符号 释义
! 逻辑反操作
- 负值
+ 正值
& 地址
sizeof 操作数的类型长度(单位:字节
~ 对一个数的二进制按位取反
-- 减减(前置 或 后置)
++ 加加(前置 或 后置)
* 间接访问操作符(解引用操作符
(类型) 强制类型转换

【注】C语言规定:0 表示 假;非0 表示 真!!!

1、!(逻辑取反)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	int b = !a;
	printf("a = %d\t b = %d\n\n", a, b);

	if (a)
	{
		//若 a 为真,做事
	}

	if (b)
	{
		//若 a 为假,做事
	}

	return 0;
}

image-20241204161605820

2、sizeof

用来计算C语言类型大小。详见:数据类型的大小

【注】是一个操作符(sizeof 在求变量时后面的括号可以省略,而在求类型时后面的括号不可以省略。因为函数后面的括号是不能省略的)。单位:字节!!!

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	printf("%d\n", sizeof(char));			//	1(字节)
	printf("%d\n", sizeof(short));			//	2(字节)
	printf("%d\n", sizeof(int));			//	4(字节)
	printf("%d\n", sizeof(long));			//	4(字节)
	printf("%d\n", sizeof(long long));		//	8(字节)
	printf("%d\n", sizeof(float));			//	4(字节)
	printf("%d\n", sizeof(double));			//	8(字节)
	printf("%d\n", sizeof(long double));	//	8(字节)

	return 0;
}

image-20241129234400801

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int arr[10] = { 0 };					//数组总空间:4 * 10

	printf("%d\n", sizeof(arr));			//40

	printf("%d\n", sizeof(arr[0]));			//4

	int sz = sizeof(arr) / sizeof(arr[0]);	//求取数组元素个数
	printf("%d\n", sz);						//10

	return 0;
}

image-20241204165854399

3、~(按位取反)

【注】将所有二进数中的 0 变成 1;1 变成 0!!!

一个整数二进制表示有 3 种原码反码补码

整数二进制最高位表示符号位1 表示 0 表示

正整数原码反码补码 相同

【注】计算机存储的是补码!!!

(1)原码

负整数二进制数,就是原码

image-20241204175415167

image-20241204175517664

(2)反码

负整数二进制数,除最高位(符号位)不变其余所有二进数中的 0 变成 11 变成 0,就是反码

image-20241204175415167

image-20241204175517664

image-20241204175548686

(3)补码

负整数的反码加 1

image-20241204175415167

image-20241204175517664

image-20241204175548686

image-20241204175659370

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	printf("%d\n", ~a);

	return 0;
}

image-20241205091908017

【注】按位取反(~)不在乎整数还是负数,一律都是 0 变成 1;1 变成 0 (符号位也正常改变)!!!

image-20241205092007252

4、++(加加)

【注】--(减减)和 ++(加加)用法相同!!!

(1)前置++(加加)

先++(加加),后使用

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 10;
	int b = ++a;		//前置 ++ :先 ++,后使用
	printf("a = %d\t b = %d\n", a, b);		//a = 11	b = 11

	return 0;
}

image-20241205093023077

(2)后置++(加加)

先使用后++(加加)。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 10;
	int b = a++;		//后置 ++ :先使用,后 ++
	printf("a = %d\t b = %d\n", a, b);		//a = 11	b = 10

	return 0;
}

image-20241205093339382

5、(类型)

强制类型转换。

【注】主要使用在使用数据类型不匹配的时候!!!

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = (int)3.14;		//强制类型转换:将 3.14 转换成 3

	printf("a = %d\n", a);

	return 0;
}

image-20241205094257611

六、关系操作符

> >= < <= !=(不等于) ==(等于)

七、逻辑操作符

&&(逻辑与) ||(逻辑或)
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 3;		//非 0 的数(真)
	int b = 0;		//0(假)

	int c = a && b;	//假
	printf("c = %d\n", c);
	
	int d = a || b;	//真
	printf("d = %d\n", d);

	return 0;
}

image-20241205100752005

八、条件操作符

条件操作符又称三目操作符

表达式1 ? 表达式2 : 表达式3

表达式1成立(),表达式2计算整个表达式结果是:表达式2的结果

表达式1不成立(),表达式3计算,整个表达式结果是:表达式3的结果

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 3;
	int max1 = 0;

	if (a > b)
	{
		max1 = a;
	}
	else
	{
		max1 = b;
	}

	printf("max1 = %d\n", max1);
	
	int max2 = a > b ? a : b;
	printf("max2 = %d\n", max2);

	return 0;
}

image-20241205101630764

九、逗号表达式

逗号隔开一串表达式

【注】逗号表达式会从左往右依次计算。整个逗号表达式的结果,是最后一个表达式的结果!!!

表达式1, 表达式2,表达式3, …… , 表达式n
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 3;
	int c = 5;

	int d = (a = b + 2, c = a - 4, b = c + 2);		//a = 5	c = 1	b = 3

	printf("a = %d\t b = %d\t c = %d\t d = %d\n", a, b, c, d);

	return 0;
}

image-20241205160142975

十、下标引用、函数调用、结构体成员

[] () . ->

1、[](下标引用操作符)

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };	//[]下标引用操作符

	printf("arr[5] = %d\n", arr[5]);					//[]下标引用操作符

	return 0;
}

image-20241205160631285

2、()(函数调用操作符)

调用函数时,函数后面的英文格式 ()小括号),就是函数调用操作符

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	printf("hehehehehe\n");		//()函数调用操作符
	printf("%d\n", 100);		//()函数调用操作符

	return 0;
}

image-20241205161153039

posted @   AK47YHAO  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示