以下のコードは 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;
}