C语言基本类型边界值

26次阅读

共计 1211 个字符,预计需要花费 4 分钟才能阅读完成。

以 int 为例,不同电脑 int 位数不同,以 64 位电脑为例,int 占 4 字节,及 4*8 = 32 位 bit,int 是带有符号的整形,所以第一位表示符号,则 int 边界值为 2^31 – 1。

其他类型参考代码:

#include <stdio.h>
#include <limits.h>

long int computedDigit(int digit);

int main() {printf("base data type size: \n");
    printf("char: %d\n", sizeof(char));
    printf("int: %d\n", sizeof(int));
    printf("float: %d\n", sizeof(float));
    printf("double: %d\n", sizeof(double));
    printf("\n\n");

    printf("base data type boundary value: \n");
    // 第一位为符号位
    printf("int: %d - %d\n", INT_MIN, INT_MAX);
    printf("int: %d - %d\n", -computedDigit(sizeof(int) * 8 - 1) - 1, computedDigit(sizeof(int) * 8 - 1));
    printf("char: %d - %d\n", CHAR_MIN, CHAR_MAX);
    printf("char: %d - %d\n", -computedDigit(sizeof(char) * 8 - 1) - 1, computedDigit(sizeof(char) * 8 - 1));
    printf("\n");
    printf("unsigned int: 0 - %u\n", computedDigit(sizeof(int) * 8));
    printf("signed int: -%u - -1\n", computedDigit(sizeof(int) * 8));
    printf("\n");
    printf("long int: -%lu - %lu\n", LONG_MIN, LONG_MAX);
    printf("long int: -%lu - %lu\n", computedDigit(sizeof(long) * 8 - 1) + 1, computedDigit(sizeof(long) * 8 - 1));
    printf("short int: %d - %d\n", SHRT_MIN, SHRT_MAX);
    printf("short int: %d - %d\n", -computedDigit(sizeof(short) * 8 - 1) - 1, computedDigit(sizeof(short) * 8 - 1));

    return 0;
}

long int computedDigit(int digit) {
    long int value = 1;
    long int item = 1;

    for (int i = 1; i < digit; i++)
    {
        item = item * 2;
        value += item;
    }

    return value;
}

正文完
 0