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语言 运算符


一、算术运算符

1.加法(+)

2.减法(-)

3.乘法(*)

4.除法(/)

在除法运算过程中不能完全整除,C语言不是采用四舍五入
参与运算的量均为整型时,结果为整型,舍去小数。
如果运算量中有一个为实型,默认结果为双精度浮点数。

//两个整数做运算,结果是整数型
printf("%d\n",5/4);

//有一个运算方是浮点数,结果是浮点数
printf("%f",5.5/4);    //sizeof 为4个字节
printf("%lf",5.5/4);   //sizeof 为8个字节

除号的正负取舍:符号相同为正,相异为负

printf("%d\n",4/2);   //2
printf("%d\n",-4/2);   //-2
printf("%d\n",4/-2);    //-2
printf("%d\n",-4/-2);   //2

在除法或者取余运算中如果右边的值是0,程序运行时将会出现程序崩溃现象。

5.取模/求余(%)

求余符号的正负取舍和被除数符号相同(与左边操作数相同)

printf("%d\n",5%2);   //1
printf("%d\n",-5%-2);  //-1
printf("%d\n",-5%2);   //-1
printf("%d\n",5%-2);   //1

操作数只能是整数型

printf("%d\n",5%2);   //1
printf("%d\n",5.0%2);   //报错
printf("%d\n",5%2.0);   //报错

在除法或者取余运算中如果右边的值是0,程序运行时将会出现程序崩溃现象。

6.自增自减(++、–)

前加加/减减(++i)
前缀自增自减符号的表达式都可以拆分为,在当前表达式前一行代码中执行自增自减运算

int i=0;
int sum=0;
sum=++i;    //先计算++i,然后赋值给sum
printf("%d,%d\n",sum,i);   //结果:1,1

后加加/减减(i++)
后缀自增自减符号的表达式都可以拆分为,在当前表达式后一行代码中执行自增自减运算。

int i=0;
int sum=0;
sum=i++;    //先把i赋值给sum,然后i++
printf("%d,%d\n",sum,i);   //结果:0,1

二、关系运算符

运算结果只能是“真”或“假”,真的值都为1,假的值都为0
在这里插入图片描述

三、逻辑运算符

运算结果也只能是“真”或“假”,真的值都为1,假的值都为0
在这里插入图片描述
逻辑与:左边真,执行右边
逻辑或:左边假,执行右边

在C语言的判断表达式中,与0的比较往往可以简写。例如:
a)if(n!=0)可以简写为if(n),while(n!=0)也可以简写为while(n);
b)if(n==0)可以简写为if(!n),while(n==0)也可以简写为while(!n)。

四、赋值运算符

在赋值符“=”之前加上其它二目运算符可构成复合赋值符。
如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=

五、位运算符

1.左移(<<)

左移运算是将一个二进制位的操作数,按指定移动的位数向左移位。移出位被丢弃,右边的空位一律补0;只要是左移n位就是等价于乘以n个2;

7<<3
7乘以32    7*2*2*2=56
结果:56

在这里插入图片描述

2.右移(>>)

右移运算是将一个二进制位的操作数,按指定移动的位数向右移动。移出位被丢弃,右边移出的空位有可能补0,也有可能补符号位。只要是右移n位就等价于除以n个2。

a)如果使用无符号变量做右移,移动后高位填充的是0。

例如:
unsigned char c= 56;  
c>>=3;
56除以32  56/2/2/2=7
结果:7

在这里插入图片描述

b)有符号变量当在最高位(符号位)是1的时候(也就是当它是负数时),右移运算后的高位填充的是1。

例如:
char c= -128;
c >>=3;
-128除以32  -128/2/2/2=-16
结果:-16

在这里插入图片描述

3.按位与(&)

按位与运算符"&"是双目运算符,其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位同时为1时,结果位才为1。否则2个对应位,有一方为0按位与的结果就是0。

7&28
结果:4

在这里插入图片描述

4.按位或(|)

按位或运算符"|"是双目运算符,其功能是参与运算的两个数双方对应的二进制位,只要有一方是1结果位就是1。否则,只有双方对应位同时为0时,按位或的结果位才是0。

//例如:
7|28=31    

在这里插入图片描述

5.按位取反(~)

取反运算符~是单目运算符,具有右结合性,其功能是对参与运算的数的各二进位按位取反。所谓取反,就是把每个位上的0变为1、1变为0。

一个有符号的数值取反之后的规律是:
a)正数或零按位取反之后一定是负数,反之亦然,负数按位取反之后一定是正数或零;
b) 0取反之后一定是-1,因为0(0x00)就是所有位都是0的数值,-1(0xFF)是所有位都为1的数值;
c) 最后一个规律就是:负数的绝对值总是比取反后的正数大1,例如:-1与0、1与-2、127与-128等。

一个无符号的数值取反之后的规律是:
a)取反之前与之后的数值都一直是正数没有负数,例如:0与255、1与254、127与128等;
b)数值小的取反后数值大,数值大的取反之后数值小,取反前与取反后的数值相加的和总是255;
c)从十六进制上看,取反之前与之后的数值相加,刚好是凑成了所有位都为1的结果(0xFF)。

6.按位异或(^)

异或(英文为exclusive OR,或缩写成xor)是双目运算符,对参与运算的两个数的二进制位比较,相同结果位得0、不同结果位得1
在这里插入图片描述

任意一个数值连续2次与同一个数做异或运算将恢复原值。

六、三目运算符(?:)

问号之前是条件判断区,问号之后是真区,冒号之后是假区。

3>4?printf("是的"):printf("不是");
(3 > 4) ? printf("是的") : printf("不是");

七、求字节数运算符

1.sizeof()

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

printf("%d",sizeof(double));    //结果:8

八、指针运算符

1.取内容(*)

取内容(*)

int i[] = {0,1,2,3};
printf("%d", *i);    //结果:0    就是数组i的首地址值

2.取地址(&)

取地址(&)

char s[] = "tl";
printf("%p", &s);   //结果:s的地址

九、运算符优先级

简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:14:05  更:2022-01-04 13:15:22 
 
开发: 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年11日历 -2024/11/24 10:47:21-

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