1、整数除法的基本行为
当在C语言中对两个整数进行除法运算时,结果也是一个整数。如果商有小数部分,小数部分会被截断(即向下取整)。如 7 / 2
在数学上等于 3.5
,但由于是整数除法,C语言会截断小数部分,结果为 3
。
#include <stdio.h> int main() { int a = 7; int b = 2; int result = a / b; // 整数除法 printf("Result: %d\n", result); // 输出 3 return 0; }
2、符号和截断的行为
对于正数,整数除法的行为通常是向下取整(去掉小数部分)。但对于负数,行为有时不太直观。C标准规定,整数除法的结果向零舍入,也就是截断的小数部分会导致结果向零方向靠近。
#include <stdio.h> int main() { int a = -7; int b = 2; int result = a / b; // 整数除法 printf("Result: %d\n", result); // 输出 -3 return 0; }
3、余数运算和取模运算
C语言中,%
运算符用于取模运算,它返回整数除法后的余数。正负数的取模运算遵循与整数除法相同的规则,结果与除数的符号保持一致。
#include <stdio.h> int main() { int a = 7; int b = 2; int result = a % b; // 取模运算 printf("7 %% 2 = %d\n", result); // 输出 1 a = -7; result = a % b; // 负数取模 printf("-7 %% 2 = %d\n", result); // 输出 -1 return 0; }
4、整数与浮点数混合运算
当整数与浮点数进行除法运算时,C语言会自动将整数提升为浮点数,结果是浮点数而非整数。
#include <stdio.h> int main() { int a = 7; float b = 2.0; float result = a / b; // 浮点数除法 printf("Result: %f\n", result); // 输出 3.500000 return 0; }
5、除数为零的行为
C语言中,整数除以零是未定义行为。如果程序试图除以零,可能会导致崩溃或异常。除以零的检查是开发者的责任。
#include <stdio.h> int main() { int a = 7; int b = 0; int result = a / b; // 未定义行为 printf("Result: %d\n", result); // 可能导致崩溃 return 0; }