为什么我可以分配一个超出其范围的 int 值?
Why can I assign a value of int that is out of its range?
所以我试图找到数组中最大和第二大的整数。所以我将它设置为可能的最小值,它似乎可以低于 -(2^31).
我尝试使用大到 -2^63 的值,它仍然有效
void findMax1Max2(int m[], int size, int *max1, int *max2)
{
int i;
*max1 = -2147483648;
*max2 = -2147483648;
for (i = 0; i < size; i++)
{
if (m[i] > *max1){
*max2 = *max1;
*max1 = m[i];
}
else if (m[i] > *max2){
*max2 = m[i];
}
}
}
获得最小整数值的正确方法是
#include <limits.h>
int val = INT_MIN;
关于您的问题,您应该阅读此 blog post 解释为什么 INT_MIN 被定义为 -2147483647 - 1
而不是 -2147483648
。
所以我试图找到数组中最大和第二大的整数。所以我将它设置为可能的最小值,它似乎可以低于 -(2^31).
我尝试使用大到 -2^63 的值,它仍然有效
void findMax1Max2(int m[], int size, int *max1, int *max2)
{
int i;
*max1 = -2147483648;
*max2 = -2147483648;
for (i = 0; i < size; i++)
{
if (m[i] > *max1){
*max2 = *max1;
*max1 = m[i];
}
else if (m[i] > *max2){
*max2 = m[i];
}
}
}
获得最小整数值的正确方法是
#include <limits.h>
int val = INT_MIN;
关于您的问题,您应该阅读此 blog post 解释为什么 INT_MIN 被定义为 -2147483647 - 1
而不是 -2147483648
。