1. 算术运算符
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取余(取模 Modulo) | 10 % 3 | 1 |
// 目标:掌握算数运算的基本语法
int main(void)
{
int m = +3;
int n = -3;
printf("m=%d, n=%d\n", m, n);
int a = 10, b = 5;
printf("a+b=%d\n", a + b);
printf("a-b=%d\n", a - b);
printf("a*b=%d\n", a * b);
printf("a/b=%d\n", a / b);
printf("10%%3=%d\n", 10 % 3); // 在printf的格式串中显示 %号, 需要使用 %%
// 3 % 10 取余结果是多少呢?
printf("3%%10=%d\n", 3 % 10); // 3
return 0;
}
注意事项
- 先 * / %,后 + -。
- 除法
- 两整数相除,结果整数(舍小数部分)
- 两浮点数相除,结果 double 浮点数
- 整数和实数相除,自动类型转换为实型
- 不允许 除 0(与数学一样)
- 取模(取余)
- 运算数必须是整型
- 对负数取余,结果为余数的绝对值
- 不允许 除 0(与数学一样)
// 目标: 掌握算术运算符使用特性
int main(void)
{
// 先乘除后加减
printf("%d\n", 4 + 6 % 5); // 5
// 两整数相除,结果整数(舍小数部分)
printf("%d\n", 19 / 10); // 1
// 两浮点数相除,结果 double 浮点数, 默认保留 6 位小数
printf("%lf\n", 3.6 / 1.3); // 2.769231
// 整数和实数相除,自动类型转换为实型
printf("%lf, %llu\n", 6 / 2.0, sizeof(6/2.0)); // 表达式结果占 8 字节, double 类型.
// 除 0 不允许
printf("%d\n", 6 / 0); // 被零除或对零取余 错误.
// 取余运算,参与运算的操作数,必须为整数
printf("%d\n", 7.3 % 2); // 表达式必须包含整数 错误.
// 对负数取余,结果为余数的绝对值
printf("%d\n", 7 % -5); // 2
// 对 0 取余不允许
printf("%d\n", 6 % 0); // 被零除或对零取模 错误.
return 0;
}
总结
算数运算符有哪些?
- 先 * / %,后 + -。
/ 运算注意什么?
- 两整数相除得整数。 运算表达式遵循类型转换规则
% 运算注意什么?
- 运算数必须是整数。 负数取余结果为正。
2. 比较运算符
基础语法
运算符 | 作用 | 示例 | 结果 |
---|---|---|---|
< | 判断 小于 | 4 < 3 | 不成立(假):0 |
<= | 判断 小于或等于 | 4 <= 3 | 不成立(假):0 |
> | 判断 大于 | 4 > 3 | 成立(真):1 |
>= | 判断 大于或等于 | 4 >= 4 | 成立(真):1 |
== | 判断 相等 | 4 == 3 | 不成立(假):0 |
!= | 判断 不相等 | 4 != 3 | 成立(真):1 |
**注意:**判断 “相等”,使用 “==”, 不能使用 “=”(赋值符)
优先级
- 整体,比算术运算符 低。
- 整体,比赋值运算符 高。
- > >= < <= 高于 == !=
// 目标: 掌握 比较运算符语法 和 优先级
int main(void)
{
// 成立 1, 不成立 0
printf("10 > 10: %d\n", 10 > 10);
printf("10 >= 10: %d\n", 10 >= 10);
int a = 10;
printf("10 <= a: %d\n", 10 <= a);
printf("10 < a: %d\n", 10 < a);
printf("a != 10: %d\n", a != 10);