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语言运算符和表达式

C语言中,运算符和表达式数量之多,在其他高级语言中是很少见的

正是丰富的运算符和表达式使C语言功能十分完善,这也是C语言的特点之一

本文介绍其中的一部分运算符,其他的运算符将陆续在后续各文中讲述

赋值运算符和赋值表达式

赋值运算符有“=”、“+=”、“-=”、“*=”、“/=”和“%=”等

用赋值运算符将运算对象连接而成的表达式称为赋值表达式

简单赋值运算符

将“=”右边表达式的值赋给左边的变量

例如:?a=8;、?s=a*2+b;

先计算出右边表达式的值,再赋给左边的变量。如果“=”左右两边类型不同,系统会按照赋值类型转换的原则将右边的类型转换成左边的类型

复合赋值运算符

在简单赋值运算符前面加上算术运算符就构成复合算术赋值运算符,如下表所示:

运算符? ? ? ? ? ? ? ? ? ? ? ? ? 应用举例? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?等阶形式

+=a+=xa=a+(x)
-=a-=xa=a-(x)
*=a*=xa=a*(x)
/=a/=xa=a/(x)
%=a%=xa=a%(x)

赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子所组成。一般形式为:变量 = 表达式

下面是赋值表达式的例子:

1
2
3
v=4.0*PI*r*r*r/3.0
a=15+(i=6)
b=(x=3)+(y=4)

而?3=x?和?a+b=4?都是错误的赋值表达式

赋值表达式的执行过程是:

  1. 计算赋值运算符右侧表达式的值;
  2. 将所计算出的值赋给赋值运算符左侧的变量

TIPS:

赋值运算符的左边只能是变量,不能是常量或表达式
赋值表达式的值就是赋值运算符左边变量的值
赋值表达式的右边也可以是一个赋值表达式

如下例题:

例:若有定义“int x=15,a,b;”,则表达式“x%=(a=3)+(b=4)”的值是 ?

答案:

  • x%=(a=3)+(b=4)
  • x%=3+4
  • x%=7
  • x=x%7
  • x=15代入得:
  • x=15%7=1

例:已有声明“int x=15, y; float z=12;”,下列表达式中语法正确的是 。
A.y=x%z
B.y=x+=z*=4
C.y=x/2=z
D.(y=x+3)=z/2

答案:B

算数运算符和算数表达式

基本的算术运算符

运算符+-*/%
名称取余

TIPS:

两个整型数据做除法运算时,结果一定是整数
求余运算的结果是两个整型数据相除的余数。求余运算只能用于整型数据的运算
算数运算符两边的数据类型应相同,若不同时,编译系统会先转换为同一数据类型,然后再进行运算

单目运算符

  • -?负号:负数
  • ++?自增运算符:使变量的值自加1
  • --?自减运算符:使变量的值自减1

有两种使用形式:

  • 前缀方式:用于变量前面,它是?“先计算,后使用”
  • 后缀方式:用于变量后面,它是?“先使用,后计算”

例:设有定义如下:
#define d 2
int x=5;
float y=3.83;
char c=’d’;
分析以下各表达式使用正确与否:
A.(-x)++
B.y++
C.c++
D.d++

答案:A错 B对 C对 D错

算术运算符的优先级和结合性

  1. 单目运算符的优先级高于双目运算符
  2. 双目算术运算符中*、/、%的优先级高于+、-
  3. 在优先级相同的情况下,按规定的“结合方向”进行处理

算术表达式

  • 算术表达式是由算术运算符、运算对象和括号连接起来的式子
  • 所有的数学表达式均可写成C语言的算术表达式,但是有些数学表达式无法直接用C语言的算术表达式写出,此时需要调用C语言中的数学函数来实现
  • TIPS:

表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上
在表达式中还可以使用多层圆括号(不能使用中括号[]和花括号{}),但是要注意括号的配对
在数学中,5×6÷4的运算结果与6÷4×5的结果相同,都是 7.5,但是C语言中表达式56/4的结果却与6/45的结果不一样
还需注意 8/(8/10)之类的表达式,因为(8/10)的结果为 0,用0做除数将会出现运算溢出的错误,为了不使 8/10 的结果为 0,应将整型常量改为实型常量8.0/10

举个例子:

例:输入一个三位正整数,输出其反序数

1  #include<stdio.h>
2  int main()
3  {
4      int number = 456;
5      int a = number / 100; 					/* 计算百位数 */
6      int b = (number - a * 100) / 10;				/* 计算十位数 */
7      int c = number % 10;					/* 计算个位数 */
8      printf("反序数是:%d%d%d\n", c, b, a); 		/* 输出*/
9      return 0;
10  }

运行结果:反序数是:321

逗号运算符和逗号表达式

逗号运算符(,):功能是把多个表达式连接起来组成一个表达式,称为逗号表达式

逗号表达式的一般形式为:

表达式1,表达式2,…,表达式n

  1. 逗号表达式的执行顺序:从左到右依次执行每个表达式
  2. 逗号表达式的值为“表达式n”的值
  3. 逗号运算符是双目运算符,其优先级最低,是左结合的
  4. 并非所有出现逗号的地方都可以作为逗号表达式,如printf("%d%d",&a,&b),其中的?"%d%d",&a,&b?并不是一个逗号表达式,而是printf函数的参数

例:逗号表达式应用示例

1  #include <stdio.h>
2  int main() 
3  {
4  	  int i,j=7;
5     float k=5;
6  	  i=(j=j+2,j/k);
7     printf("i=%d\n",i);
8     return 0;
9  }

运行结果:i=1

求字节数运算符

sizeof(…):是一个单目运算符,用于计算数据类型所占的字节数,其一般格式为:

  1. sizeof(表达式)或sizeof 表达式
  2. sizeof(数据类型名)

例:不同数据类型字节数示例

?

1  #include<stdio.h>
2  int main() 
3  {
4      printf("char类型占%d字节\n",sizeof(char));
5      printf("short int类型占%d字节\n",sizeof(short int));
6      printf("int类型占%d字节\n",sizeof(int));
7      printf("float类型占%d字节\n",sizeof(float));
8      printf("double类型占%d字节\n",sizeof(double));
9      return 0;
10  }
运行结果:
  • char类型占1字节
  • short int类型占2字节
  • int类型占4字节
  • float类型占4字节
  • double类型占8字节

例:求字节数运算符示例

1  #include<stdio.h>
2  int main()
3  {
4   	int a,b;
5   	a=sizeof(3+5.0);
6   	b=sizeof 3+5.0;
7   	printf("%d,%d,%d\n",a,b,sizeof("china"));
8   	return 0;
9  }

运行结果:8,9,6

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

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