C 语言算术运算符
1236 字
6 分钟
C 语言算术运算符
【一】表达式
- 定义:所谓表达式是指由运算符、运算量和标点符号组成的有效序列,是用来说明一个计算过程。
- 表达式语句:表达式可以独立形成语句,该语句称为表达式语句。
- 一般形式:
<表达式> ;(注意末尾必须有分号)
【二】算术运算符
| 运算符 | 功能说明 | 举例 |
|---|---|---|
+ | 加,一目取正(一元正号) | a+b, +a |
- | 减,一目取负(一元负号) | a-b, -a |
* | 乘法 | a*b |
/ | 除法 | a/b |
% | 取模或求余 | a%b |
++ | 增1(自增) | a++, ++b |
-- | 减1(自减) (被UI遮挡) | a--, --b |
这张图片紧接着上一节的算术运算符,专门针对最容易出错的除法运算符 / 和取模运算符 % 进行了详细区分。这是C语言初学者最容易踩坑的地方,也是考试必考的核心点。
按照惯例,我为你整理了结构化笔记,并补充了极其重要的实战避坑指南:
【三】整数除法和实数除法
C语言的除法运算符分为整数除法和实数除法。
【1】整数除法
- 求整
/:得到两个整数相除的整数部分。 - 求余
%:得到两个整数相除的余数部分。 - 举例:
1/2的结果为0(小数部分被直接丢弃)1%2的结果为1(1除以2,商0余1)
【2】实数除法
- 除法
/:得到两个实数相除的结果为一个实数。 - 举例:
1.0/2的结果为0.5
这张图片是一个具体的实战练习题(练习9),通过实际代码运行来验证上一节关于整数除法和实数除法的理论知识。
按照惯例,我为你整理了结构化笔记,并针对代码中的细节和考点进行深度解析:
【四】练习
【1】除法运算符
-
题目:计算
1/2、1.0/2、1%2的结果分别是多少? -
源代码:
#include <stdio.h>int main(int argc, char const *argv[]){printf("1/2 =%d\n",1/2);printf("1.0/2=%f\n",1.0/2);printf("1%%2 =%d\n",1%2);return 0;} -
运行结果:
1/2=01%2=11.0/2=0.500000
这张图片详细讲解了C语言中极其重要且容易出错的自增(++)与自减(--)运算符。图片通过定义和七行代码示例,精准地展示了“前缀(先算后用)”和“后缀(先用后算)”的区别。
按照惯例,我为你整理了结构化笔记,并对代码示例进行了深度拆解,最后补充了考试必考的避坑指南:
【2】自增自减运算符
(1)自增运算符
i++:表示i的值先参与运算,最后再自增1(后缀)。++i:表示i的值先自增1,之后再参与运算(前缀)。
(2)自减运算符
i--:表示i的值先参与运算,最后再自减1(后缀)。--i:表示i的值先自减1,之后再参与运算(前缀)。
假设每一行代码都从头执行,即初始值始终是 x=5, y=9。如果连续执行而不重置变量,结果会不同。
我们按照图片给出的初始值 x=5, y=9,逐行拆解:
z = ++x;- 前缀:
x先加1变成6,然后把6赋给z。 - 结果:
z=6,x=6
- 前缀:
z = x++;- 后缀:先把
x当前值5赋给z,然后x再加1变成6。 - 结果:
z=5,x=6
- 后缀:先把
z = --x;- 前缀:
x先减1变成4,然后把4赋给z。 - 结果:
z=4,x=4
- 前缀:
z = x--;- 后缀:先把
x当前值5赋给z,然后x再减1变成4。 - 结果:
z=5,x=4
- 后缀:先把
z = ++x+y++;- 前缀+后缀混合:
++x使x变成6(取6参与运算),y++取y当前值9参与运算(然后y变成10)。z = 6 + 9 = 15。 - 结果:
z=15,x=6,y=10
- 前缀+后缀混合:
z = --x+y++;--x使x变成4(取4参与运算),y++取y当前值9参与运算(然后y变成10)。z = 4 + 9 = 13。- 结果:
z=13,x=4,y=10
z = ++x+y--;++x使x变成6(取6参与运算),y--取y当前值9参与运算(然后y变成8)。z = 6 + 9 = 15。- 结果:
z=15,x=6,y=8
【3】算术运算符
- 源代码(基于输出结果还原,利用重置变量来独立验证每一行的逻辑):
#include <stdio.h>int main() {int x, y, z;// 第一行x = 5; y = 9; z = ++x; // 前缀:x先加1变6,z=6printf("z=%d, x=%d\n", z, x);// 第二行x = 5; y = 9; z = x++; // 后缀:z=5,x再加1变6printf("z=%d, x=%d\n", z, x);// 第三行x = 5; y = 9; z = --x; // 前缀:x先减1变4,z=4printf("z=%d, x=%d\n", z, x);// 第四行x = 5; y = 9; z = x--; // 后缀:z=5,x再减1变4printf("z=%d, x=%d\n", z, x);// 第五行x = 5; y = 9; z = ++x + y++; // ++x为6,y++取9,z=15;运算后x=6, y=10printf("z=%d, x=%d, y=%d\n", z, x, y);// 第六行x = 5; y = 9; z = --x + y++; // --x为4,y++取9,z=13;运算后x=4, y=10printf("z=%d, x=%d, y=%d\n", z, x, y);// 第七行x = 5; y = 9; z = ++x + y--; // ++x为6,y--取9,z=15;运算后x=6, y=8printf("z=%d, x=%d, y=%d\n", z, x, y);return 0;}
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!














