一、除法运算符(/)
除法是C语言算术运算符中与数学运算差异最大的运算符之一,其运算结果严格依赖于操作数的数据类型,是初学者最易出错的知识点。
1. 核心运算规则
-
整数除法 :当被除数和除数均为整数类型 时,运算结果为整数 ,直接舍弃小数部分(向零取整),而非四舍五入。
-
浮点除法 :当被除数或除数中至少有一个为浮点型 (
float/double)时,运算结果为浮点型,保留完整小数部分。
2. 关键特性(结合谭浩强《C程序设计(第五版)》补充)
-
负数整数除法的舍入方向:多数C编译系统(如VS、GCC)采用向零取整原则,即结果向数值0的方向靠拢。例如:
-
5 / 3 = 1(舍弃0.666...)。 -
-5 / 3 = -1(舍弃-0.666...,向零取整为-1,而非-2)。
-
-
浮点除法的精度:
float型结果保留约6位有效数字,double型保留约15位有效数字。
3. 代码示例与解析
#include <stdio.h>
int main() {
// 整数除法示例
printf("=== 整数除法 ===\n");
printf("16 / 5 = %d\n", 16 / 5); // 输出3,舍弃0.2
printf("5 / 16 = %d\n", 5 / 16); // 输出0,舍弃0.3125
printf("-16 / 5 = %d\n", -16 / 5); // 输出-3,向零取整
printf("16 / -5 = %d\n", 16 / -5); // 输出-3
printf("-16 / -5 = %d\n", -16 / -5);// 输出3
// 浮点除法示例
printf("\n=== 浮点除法 ===\n");
printf("16.0 / 5 = %f\n", 16.0 / 5); // 输出3.200000,double型结果
printf("16 / 5.0 = %f\n", 16 / 5.0); // 输出3.200000
printf("16.0 / 5.0 = %f\n", 16.0 / 5.0);// 输出3.200000
printf("5.0 / 16 = %.4f\n", 5.0 / 16); // 输出0.3125,保留4位小数
return 0;
}
二、取余(取模)运算符(%)
取余运算符用于计算两个整数相除后的余数,其使用频率低于除法,但规则特殊,需重点掌握。
1. 核心运算规则
-
操作数要求 :两个操作数必须均为整数类型 (
int/short/long等),若出现浮点型操作数会直接编译报错。 -
结果定义 :
a % b的结果等于a - (a / b) * b,其中a / b遵循整数除法的向零取整规则。 -
符号规则 :取余结果的符号始终与被除数一致,与除数的符号无关。
2. 关键特性
-
当被除数的绝对值小于除数 时,取余结果等于被除数本身。例如:
3 % 5 = 3,-3 % 5 = -3。 -
当被除数能被除数整除时,取余结果为0。例如:
6 % 3 = 0,-9 % 3 = 0。
3. 代码示例与解析
#include <stdio.h>
int main() {
printf("=== 取余运算符示例 ===\n");
// 正数取余
printf("13 %% 3 = %d\n", 13 % 3); // 输出1,13 = 3 * 4 +1
printf("3 %% 13 = %d\n", 3 % 13); // 输出3,被除数小于除数
printf("6 %% 3 = %d\n", 6 % 3); // 输出0,整除
// 含负数的取余(符号与被除数一致)
printf("13 %% -3 = %d\n", 13 % -3); // 输出1,被除数为正
printf("-13 %% 3 = %d\n", -13 % 3); // 输出-1,被除数为负
printf("-13 %% -3 = %d\n", -13 % -3);// 输出-1,被除数为负
printf("-3 %% 13 = %d\n", -3 % 13); // 输出-3,被除数小于除数
return 0;
}
注意 :在
printf中输出百分号%时,需使用%%进行转义,否则会被识别为格式声明符。
三、核心易错点总结
-
整数除法的舍入陷阱 :不要将整数除法的结果误认为是四舍五入,例如
7 / 2 = 3而非4,-7 / 2 = -3而非-4。 -
浮点除法的触发条件 :若需要保留小数结果,必须确保至少一个操作数为浮点型。例如计算
1/3时,应写成1.0/3或1/3.0。 -
取余运算符的类型限制 :严禁对浮点型数据使用
%运算符,例如5.0 % 3会导致编译错误。 -
余数符号的判断:牢记余数符号与被除数一致,与除数无关,这是最易混淆的规则。
-
被除数小于除数的情况 :当
|a| < |b|时,a % b = a,例如2 % 5 = 2,-2 % 5 = -2。