IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】运算符 -> 正文阅读

[C++知识库]【C语言】运算符

目录

一、概念

二、种类

2.1 算术运算符

2.1.1 加(+)、减(-)、乘(*)、除(/)、模除(%)

?2.1.2 自增(++)、自减(--)

2.2 关系运算符

2.3 逻辑运算符

2.3.1包括 与(&&)、或(||)、非(!)三种。

2.3.2?逻辑运算符的短路原则:

2.4 位操作运算符

2.5 赋值运算符

2.6 条件运算符

2.7 逗号运算符

2.8 指针运算符

2.9 求字节数运算符

2.10 特殊运算符

三、 运算符优先级


一、概念

? ? ? ? 运算符是告诉程序执行特定的算术或逻辑操作的符号,运算符会连接多个表达式,所谓的表达式就是由运算符、运算量和标点符号等组成的有效的序列,是用来说明一个运算的过程的。

二、种类

2.1 算术运算符

????????用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模除运算,%)、自增(++)、自减(--)共七种。

2.1.1 加(+)、减(-)、乘(*)、除(/)、模除(%)

????????比较简单,跟常用的数学算术运算没有区别;

#include <stdio.h>

int main()
{
	int m = 10;
	int n = 20;
	printf("m + n = %d\n", m+n);
	printf("m - n = %d\n", m-n);
	printf("m * n = %d\n", m*n);
	printf("m / n = %f\n", (float)m/(float)n);//强转
	printf("m %% n = %d\n", m%n);//输出% 需要使用  %%

    return 0;
}

执行结果:

??

?2.1.2 自增(++)、自减(--)

? ? ? ? a++ / ++a 算术结果等同于 a = a+1;

? ? ? ? a-- / --a 算术结果等同于 a = a -1 ;

? ? ? ? 注意:前缀的自增自减和后缀的自增自减是不一样的,使用时需要注意。

#include <stdio.h>

int main()
{
	int a = 10;
	int b = a++;
	printf("a = %d  b = %d\n", a, b);

	int x = 10;
	int y = ++x;
	printf("x = %d  y = %d\n", x, y);

	return 0;
}

????????运行结果:

? ? ? ? ① a = 10; b = a++;实现逻辑:第一步在空间中临时放置a 的值10,假设此空间名字为temp;第二步执行a = a+1;第三步将temp的值赋值给b。

? ? ? ? ②x = 10; y = ++x;实现逻辑: 第一步执行x = x+1; 第二步将x的值赋值给y。

2.2 关系运算符

????????用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。? ?

????????注意:关系运算符的判断相等是两个等号,一个等号是赋值运算符,关系运算符表达式的结果是一个 bool 类型,0 表示假 非0表示真。

#include <stdio.h>

int main()
{
	int m = 20;
	int n = 10;

	if(m >= n){
		printf("m >= n\n");
	}else{
		printf("m < n\n");
	}
	//其他的关系运算符用法 同理

	return 0;
}

2.3 逻辑运算符

2.3.1包括 与(&&)、或(||)、非(!)三种。

????????逻辑运算符使用来连接由多个关系运算符组成的表达式的,逻辑运算符的表达式的结果也是 bool 类型。

#include <stdio.h>

int main()
{
	int m = 20;
	int n = 10;

	if(m>0 && n>0){
		printf("yes\n");
	}else{
		printf("no\n");
	}

    return 0;
}

2.3.2?逻辑运算符的短路原则:

????????逻辑与:逻辑与连接的多个表达式,遇到某个表达式为假,后面的表达式就都不执行了,因为这个假足以判断整个表达式为假。

????????逻辑或:逻辑或连接的多个表达式,遇到某个表达式为真,后面的表达式就都不执行了,因为这个真足以判断整个表达式为真。

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int c = 30;
	//因为 b<0 为假, 所以 ++c 不再执行了
	if(++a && b<0 && ++c){
		printf("yes\n");
	}else{
		printf("no\n");
	}
	printf("a = %d  b = %d  c = %d\n", a, b, c);//11 20 30

	a = 10;
	b = 20;
	c = 30;
	//由于 ++b 为真 所以 ++c 不再执行了
	if(a<0 || ++b || ++c){
		printf("yes\n");
	}else{
		printf("no\n");
	}
	printf("a = %d  b = %d  c = %d\n", a, b, c);//10 21 30

	return 0;
}

????????上述代码执行结果:

?

?2.4 位操作运算符

????????参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

????????一般位运算都是无符号数参与运算,如果用有符号数,会涉及原码反码补码转换的问题。

????????& 按位与 :按位运算 全1为1 有0为0

????????| 按位或 :按位运算 有1为1 全0为0

????????^ 按位异或 :按位运算 不同为1 相同为0

????????~ 按位取反 :按位运算 1变0 0变1

? ? ? ?<< 按位左移:整个数据向左移动 高位舍弃 低位补0

????????>> 按位右移 :整个数据向右移动 高位补0 舍弃低位

#include <stdio.h>

int main()
{
	unsigned char a = 20;
	unsigned char b = 33;
	unsigned char c = 0;

	//按位与  全1为1 有0为0
	//a:0001 0100
	//b:0010 0001
	//&
	//c:0000 0000
	c = a&b;
	printf("a&b = %#x\n", c);//0x00
	
	//按位或 有1为1  全0为0
	//a:0001 0100
	//b:0010 0001
	//|
	//c:0011 0101
	c = a|b;
	printf("a|b = %#x\n", c);//0x35

	//按位异或 相同为0,不同为1
	//a:0001 0100
	//b:0010 0001
	//^
	//c:0011 0101
	c = a^b;
	printf("a^b = %#x\n", c);//0x35

	//按位取反
	//a:0001 0100
	//~
	//c:1110 1011
	c = ~a;
	printf("~a = %#x\n", c);//0xEB

	//按位左移
	//a:0001 0100
	// <<2
	//c:0101 0000
	c = a<<2;
	printf("a<<2 = %#x\n", c);//0x50
	
	//按位右移
	//a:0001 0100
	// >>2
	//c:0000 0101
	c = a>>2;
	printf("a>>2 = %#x\n", c);//0x05

	return 0;
}

2.5 赋值运算符

????????用于赋值运算,分为简单赋值(=)、复合算术赋值(+= , -= , *= , /= , %=)和复合位运算赋值(&= , |= , ^= , >>= , <<= )三类共十一种。

? ? ? ? 注意:

????????????????1.一个等号是赋值 两个等号是关系运算符判断相等

????????????????2. 左=右, 将右边的值赋值给左边

????????????????3.常量不允许放在等号的左边

2.6 条件运算符

????????这是一个三目运算符,用于条件求值(?:)。

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

? ? ? ? 执行顺序:先执行表达式1,如果1的值为真则执行表达式2,否则执行表达式3;

#include <stdio.h>

int main()
{
	int a = 10;
	int b = 20;
	int c = 30;
	int d = 0;

	d = ++a?++b:++c;
	printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);

	return 0;
}

执行结果:

?2.7 逗号运算符

????????用于把若干表达式组合成一个表达式(,)。

????????格式:(表达式1, 表达式2, ..,表达式n)

????????执行逻辑:从左到右依次执行,每个表达式都会参与运算,最后一个表达式的结果,就是整个逗号运算符表达式的结果。

2.8 指针运算符

????????用于取内容(*)和取地址(&)二种运算。

? ? ? ? 本文不再详细描述,后续指针章节再聊。

2.9 求字节数运算符

????????用于计算数据类型所占的字节数(sizeof)。

? ? ? ? 注意:sizeof()用法非常像函数调用,但是sizeof为运算符。

#include <stdio.h>

int main()
{
	char a;
	short b;
	int c;
	
	printf("sizeof(char) = %ld, sizeof(a) = %ld\n", sizeof(char), sizeof(a));
	printf("sizeof(short) = %ld, sizeof(b) = %ld\n", sizeof(short), sizeof(b));
	printf("sizeof(int) = %ld, sizeof(c) = %ld\n", sizeof(int), sizeof(c));

	return 0;
}

上述代码执行结果:

??

2.10 特殊运算符

????????有括号(),下标[],成员(→,.)等几种。

三、 运算符优先级

? ? ? ? 单算移关与,异或逻条赋

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:35:34  更:2022-10-31 11:39:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:41:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码