C语言关于溢出和不溢出的判断
通过实验来判断整数溢出,浮点数溢出的情况
#include <stdio.h>
#include <limits.h>
#include <float.h>int main(void) {
// 整数溢出
int int_max = INT_MAX; // INT_MAX 是 int 类型的最大值
int int_min = INT_MIN; // INT_MIN 是 int 类型的最小值
unsigned int uint_max = UINT_MAX; // UINT_MAX 是 unsigned int 类型的最大值printf("整数溢出实验:\n");
printf("int_max = %d\n", int_max);
printf("int_max + 1 = %d (溢出)\n", int_max + 1); // 发生溢出
printf("int_min = %d\n", int_min);
printf("int_min - 1 = %d (溢出)\n", int_min - 1); // 发生溢出
printf("uint_max = %u\n", uint_max);
printf("uint_max + 1 = %u (溢出)\n", uint_max + 1); // 发生溢出// 浮点数溢出
float float_max = FLT_MAX; // FLT_MAX 是 float 类型的最大值
double double_max = DBL_MAX; // DBL_MAX 是 double 类型的最大值printf("\n浮点数溢出实验:\n");
printf("float_max = %e\n", float_max);
printf("float_max * 2 = %e (溢出,变为无穷大)\n", float_max * 2); // 发生溢出,变为无穷大
printf("double_max = %e\n", double_max);
printf("double_max * 2 = %e (溢出,变为无穷大)\n", double_max * 2); // 发生溢出,变为无穷大// 浮点数下溢出
printf("\n浮点数下溢出实验:\n");
printf("float_min = %e\n", FLT_MIN); // FLT_MIN 是 float 类型的最小正数
printf("float_min / 2 = %e (下溢出,变为接近零)\n", FLT_MIN / 2); // 下溢出,接近零
printf("double_min = %e\n", DBL_MIN); // DBL_MIN 是 double 类型的最小正数
printf("double_min / 2 = %e (下溢出,变为接近零)\n", DBL_MIN / 2); // 下溢出,接近零return 0;
}