标签:
我们可以使用系统提供的常量:
如果是int型,可以用INT_MAX表示正无穷,INT_MIN表示负无穷,需要包含头文件limits.h;
如果是double型,可以用DBL_MAX表示正无穷,-DBL_MAX表示负无穷(注意不是DBL_MIN),需要包含头文件float.h。
我们也可以自己设置一个很大的值作为无穷大:
如设置一个无穷大常量为0x7fffffff,这个数是32位int型的最大值,符号位为0,其他的都是1。但是这个值在相加时会溢出,这样两个无穷大数相加会变成负数。
为了尽量避免以上的错误,我们可以将0x3f3f3f3f设为无穷大,这个数已达到10^9,足以表示无穷大,又因为0x3f3f3f3f+0x3f3f3f3f=2122219134,满足无穷大+无穷大仍为无穷大。当把无穷大设为0x3f3f3f3f时,在做初始化时也很方便。
如在初始化数组a时,可以使用Memset(a,0x3f,sizeof(a)),因为0x3f3f3f3f的每个字节都是0x3f,如果使用0x7fffffff,需要循环赋值。
如:
#include
#include
#define MAX1 0x7fffffff
#define MAX2 0x3f3f3f3f
int a[3];
int main() {
memset(a, 0x3f, sizeof(a));
printf("%d\n", MAX1);
printf("%d\n", MAX1 * 2);
printf("%d\n", MAX2);
printf("%d\n", MAX2 * 2);
for (int i = 0; i < 3; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
运行结果如下:
2147483647
-2
1061109567
2122219134
1061109567 1061109567 1061109567
Process finished with exit code 0
标签:
来源: https://blog.csdn.net/zgcr654321/article/details/83046275