C陷阱与缺陷 第7章 可移植性缺陷 7.8 随机数的大小

发布于:2022-12-25 ⋅ 阅读:(339) ⋅ 点赞:(0)

     最早的C语言实现运行于PDP-11计算机上,它提供了一个称为rand的函数,该函数的作用是产生一个(伪)随机非负整数。PDP-11计算机上的整数长度为16位(包括了符号位),因此rand函数将返回一个介于0和2^15-1之间的整数。
    ANSI C标准中定义一个常数RAND_MAX,它的值等于随机数的最大取值。 

    利用sizeof操作符可以测定常数所占的字节的大小,然后就可以输出它的值。

    /*
    ** 随机数。 
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>

    int main( void ){
        int size = sizeof RAND_MAX;
    
        printf( "size = %d\n", size );
        if( sizeof(int) == sizeof(long) ){
            if( RAND_MAX <= INT_MAX ){
                printf( "1.1:RAND_MAX = %d\n", RAND_MAX );
            } else if( RAND_MAX <= UINT_MAX ){
                printf( "1.2:RAND_MAX = %u\n", RAND_MAX );
            } else if( RAND_MAX <= LLONG_MAX ){
                printf( "1.3:RAND_MAX = %lld\n", RAND_MAX );
            } else if( RAND_MAX <= ULLONG_MAX ){
                printf( "1.4:RAND_MAX = %llu\n", RAND_MAX );
            }
        } else{
            if( RAND_MAX <= INT_MAX ){
                printf( "2.1:RAND_MAX = %d\n", RAND_MAX );
            } else if( RAND_MAX <= UINT_MAX ){
                printf( "2.2:RAND_MAX = %u\n", RAND_MAX );
            } else if( RAND_MAX <= LONG_MAX ){
                printf( "2.3:RAND_MAX = %ld\n", RAND_MAX );
            } else if( RAND_MAX <= ULONG_MAX ){
                printf( "2.4:RAND_MAX = %lu\n", RAND_MAX );
            }
        }
        printf( "rand() = %d, rand() = %d\n", rand(), rand() );
     
        return EXIT_SUCCESS;
    }

输出:

本文含有隐藏内容,请 开通VIP 后查看