如果整数超出了相应类型的取值范围会怎样?

/* toobig.c-- 超出系统允许的最大int值 */
#include <stdio.h>                                                           

int main()
{
    int i = 2147483647;
    unsigned int j = 4294967295;

    printf("%d %d %d\n", i, i + 1, i + 2);

    printf("%u %u %u\n", j, j + 1, j + 2);

    return 0;

}

输出的结果是

2147483647 -2147483648 -2147483647

4294967295 0 1

可以把无符号整数j看作是汽车的里程表。当达到它能表示的最大值时,会重新从起始点开始。整数i也是类似的情况。它们主要的区别是,在超过最大值时,unsigned int类型的变量j从0开始;而int类型的变量i则从-2147483648开始。注意,当i超出(溢出)其相应类型所能表示的最大值 时,系统并未通知用户。因此,在编程时必须自己注意这类问题。


0 Comments latest

No comments.