Это код, который я использую для поиска значений символических констант для LONG.
#include <limits.h> //These header files contains the symbolic constants
#include <float.h> //for different datatypes
#include <stdio.h>
int main(void){
printf("\tMininum numeric value for long type: %ld\n", LONG_MIN);
printf("\tMaximum numeric value for long type: %ld\n", LONG_MAX);
printf("\tMaximum numeric value for unsigned long type: %lu\n", (unsigned)ULONG_MAX);
return 0;
}
Результат, который я получаю:
Mininum numeric value for long type: -9223372036854775808
Maximum numeric value for long type: 9223372036854775807
Maximum numeric value for unsigned long type: 4294967295
Но если посмотреть limit.h на странице руководства. Это символические константы для LONG_MIN
, LONG_MAX
, LLONG_MIN
и LLONG_MAX
из файла limits.h
в моей системе.
{LONG_MIN}
Minimum value of type long.
Maximum Acceptable Value: -2 147 483 647
{LONG_MAX}
Maximum value of a long.
Minimum Acceptable Value: +2 147 483 647
{LLONG_MIN}
Minimum value of type long long.
Maximum Acceptable Value: -9223372036854775807
{LLONG_MAX}
Maximum value of type long long.
Minimum Acceptable Value: +9223372036854775807
Как будто программа выдает мне значения из Long long символических констант.
Почему это происходит?
ULONG_MAX
вunsigned
, что недостаточно велико для хранения значения (в вашей системе). Приведение не требуется. - person davmac   schedule 22.06.2016