1

以下のコードは 2147483647 の出力を与えています。if(atol(str)<=2147483647u) が のように変更されたif(atol(str)<2147483647u)場合、出力は 100 です。入力は と同じままstr= "2147483649"です。

#include <stdio.h>
#include <ctype.h>

int main()
{
    unsigned long  l = 100;
    unsigned char str[19] = "2147483649";

    if(atol(str)<=2147483647u)
    {
        l = atol(str);
    }
    printf("\n%ld",l);

    return 0;
}
4

2 に答える 2

0

関数atol()は を返しますlong int。ただし、コードがif(atol(str) <= 2147483647u)両方の場合、数値は として扱われunsigned long intます。つまり(2147483649 > 2147483647)、出力は100です。コードが if(atol(str) <= 2147483647)両方である場合long int、出力は-2147483647であり、これは の符号付き long2147483649です -2147483647 < 2147483647

于 2013-05-27T10:48:43.000 に答える