一、表达式
1.表达式是什么
一个或多个运算对象与零个或多个运算符组成的式子叫做表达式。
每个表达式都有一个结果
printf("%d\n" 5+10); //表达式结果为:152.表达式语句
在表达式后边加上;就构成了表达式语句,C语言中表达式不能单独存在,必须以表达式语句的方式存在。
100;
5+10;
a/b;
a*10/b+c;printf("%d\n" 5+10); //5+10表达式为什么后边没有;号,是因为5+10在这个语句中是函数调用表达式的子表达式。函数名加括号运算符构成了一个函数表达式。
二、运算符
在C语言中,运算符有非常的多。它内置的运算符丰富到令人头皮发麻,但同时给了我们对代码的更多操作性。
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 杂项运算符
1.算术运算符
算术运算符专门用于算术运算,主要有下面几种。
一元运算符指的是只有一个运算对象,反之,二元运算符是指有两个运算对象。
+:正值运算符(一元运算符)-:负值运算符(一元运算符)+:加法运算符(二元运算符)-:减法运算符(二元运算符)*:乘法运算符/:除法运算符%:余值运算符
| 名称 | 运算符号 | 描述 | 举例 |
|---|---|---|---|
| 正值运算符 | + | 表示这个操作数为正数 | +12(它是+12) |
| 负值运算符 | - | 表示这个操作数为负数 | -12(它是-12) |
| 加法运算符 | + | 添加两个操作数 | 2+10=12 |
| 减法运算符 | - | 从第一个减去第二个操作数 | 12-2=10 |
| 自增运算符 | ++ | 自增运算符将整数值增加1 | int a = 1; a++ |
| 自减运算符 | -- | 自减运算符将整数值减小1 | int a = 1; a-- |
| 乘法运算符 | * | 将两个操作数相乘 | 2*6=12 |
| 除法运算符 | / | 将两个操作数相除 | 12/2=6 |
| 余值运算符(求余运算符) | % | 将操作数相除后取余 | 12%5=2 |
(1)+ -
这两个运算符既可以当做一元运算符,也可以当做二元运算符
所谓一元运算符,指的是只需要一个运算数就可以执行。一元运算符-用来改变一个值的正负号。
int num = -1;
int num2 = +num;这段代码中的-将1变为了-1。正号+对正负值没有什么影响,+不会改变正负值,可加可不加。
二元运算符+ -也就是用他们来完成加减法。
int x = 6 + 6;
int y = 13 - 1;(2)*乘法运算符
运算符*用来完成乘法。
int num = 2 * 6;
printf("%i", num); // 输出12
// 或者
int num = 6;
printf("%i\n", num * num);//输出 36(3)/除法运算符
运算符/用来完成除法。注意,两个整数相除,得到还是一个整数。
float x = 6 / 4;
printf("%f\n", x); // 输出 1.000000上面示例中,尽管变量x的类型是float(浮点数),但是6 / 4得到的结果是1.0,而不是1.5。原因就在于 C语言里面的整数除法是整除,只会返回整数部分,丢弃小数部分。
如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数,这时 C 语言就会进行浮点数除法。
float x = 6.0 / 4; // 或者写成 6 / 4.0
printf("%f\n", x); // 输出 1.500000上面示例中,6.0 / 4表示进行浮点数除法,得到的结果就是1.5。
小测试:
int score = 5;
score = (score / 20) * 100;
printf("%i", score);这段代码的运行结果是什么?
如果你的运算结果为25,那么恭喜你,错了。回去好好再看一次笔记
如果你的运算结果为0,那么恭喜你,对了。继续看笔记吧。
为了得到预想的结果(运算结果为25),可以将除数20改成20.0,让整除变成浮点数除法。
score = (score / 20.0) * 100;(4)%求余运算符(取模运算符)
运算符%表示求模(取余)运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
int x = 12 % 5;
printf("%i", x); // 2负数求模的规则是,结果的正负号由第一个运算数的正负号决定。
11 % -5 // 1
-11 % -5 // -1
-11 % 5 // -1上面示例中,第一个运算数的正负号(11或-11)决定了结果的正负号。
(5)赋值运算的简写形式
如果变量对自身的值进行算术运算,C 语言提供了简写形式,允许将赋值运算符和算术运算符结合成一个运算符。
- +=
- -=
- *=
- /=
- %=
下面是一些例子。
i += 3; // 等同于 i = i + 3
i -= 8; // 等同于 i = i - 8
i *= 9; // 等同于 i = i * 9
i /= 2; // 等同于 i = i / 2
i %= 5; // 等同于 i = i % 52.自增、自减运算符
C 语言提供两个运算符,对变量自身进行+ 1和- 1的操作
- ++:自增运算符
- --:自减运算符
i++; // 等同于 i = i + 1
i--; // 等同于 i = i - 11.前置自增(减)运算符
前置运算——运算符都放在变量之前:++变量名、--变量名,如++i --i。它先使变量的值增或减1,再以变化后的值参与其他运算,即先自增(或先自减)后运算。
2.后置自增(减)运算符
后置运算——运算符放在变量之后:变量名--, 变量名++如:i++ i--。它使变量先参与其他运算,再使变量的值增或减1,即先运算后自增(或后自增)。
3.常用运算符优先级
| 标记 | 操作符 | 类型 | 优先级 |
|---|---|---|---|
| ++-- | 自增、自减 | 后缀 | 16 |
| ++-- | 自增、自减 | 前缀 | 15 |
| +- | 正号,负号 | 单目 | 15 |
| */% | 乘、除、取余 | 双目 | 13 |
| +- | 加、减 | 双目 | 12 |
| = | 赋值 | 双目 | 2 |
3.关系运算符
<小于<=小于或等于>大于运算符>=大于或等于==等于!=不等于
4.逻辑表达式
(1)逻辑运算符
| 运算符 | 含义 | 含义 | ||
|---|---|---|---|---|
| && | 与 | 逻辑与 | ||
| ` | ` | 或 | 逻辑或 | |
| ! | 非 | 逻辑非 |
(2)逻辑表达式
| C语言 | 计算机逻辑表达式的值 | 判断量的真假 |
|---|---|---|
| 真 | 1 | 非0 |
| 假 | 0 | 0 |
总结
| 标记 | 操作符 | 类型 | 优先级 | ||
|---|---|---|---|---|---|
++ -- | 自增、自减 | 后缀 | 16 | ||
++ -- | 自增、自减 | 前缀 | 15 | ||
! | 逻辑非 | 单目 | 15 | ||
+ - | 正号、负号 | 单目 | 15 | ||
* / % | 乘、除、取余 | 双目 | 13 | ||
+ - | 加、减 | 双目 | 12 | ||
< > <= >= | 关系 | 双目 | 10 | ||
== != | 逻辑与 | 双目 | 9 | ||
| ` | ` | 逻辑或 | 双目 | 5 | |
?: | 条件 | 三目 | 3 | ||
= | 赋值 | 双目 | 2 |


of really obtain helpful data regarding my study and knowledge.