Hel*_*rld 3 c variables macros limits
我在Windows 8.1(x64)上运行了以下C代码,以便更好地理解原始数据类型的下限和上限,但我发现输出令人惊讶.
#include <limits.h>
#include <stdio.h>
int main(void)
{
printf("\n");
printf("Integer types");
printf("\n");
printf("\n");
printf("Signed");
printf("\n");
printf("\n");
printf("signed char: %d to %d\n", SCHAR_MIN, SCHAR_MAX);
printf("signed short int: %d to %d\n", SHRT_MIN, SHRT_MAX);
printf("signed int: %d to %d\n", INT_MIN, INT_MAX);
printf("signed long int: %d to %d\n", LONG_MIN, LONG_MAX);
printf("signed long long int: %d to %d\n", LLONG_MIN, LLONG_MAX);
printf("\n");
printf("Unsigned");
printf("\n");
printf("\n");
printf("unsigned char: 0 to %d\n", UCHAR_MAX);
printf("unsigned short int: 0 to %d\n", USHRT_MAX);
printf("unsigned int: 0 to %d\n", UINT_MAX);
printf("unsigned long int: 0 to %d\n", ULONG_MAX);
printf("unsigned long long int: 0 to %d\n", ULLONG_MAX);
printf("\n");
printf("Platform dependant");
printf("\n");
printf("\n");
printf("char: %d to %d\n", CHAR_MIN, CHAR_MAX);
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下是输出:
整数类型
签
signed char:-128 to 127
signed short int:-32768 to 32767
signed int:-2147483648 to 2147483647
signed long int:-2147483648 to 2147483647
signed long long int:0 to -1
无符号
unsigned char:0到255
unsigned short int:0到65535
unsigned int:0到-1
unsigned long int:0到-1
unsigned long long int:0到-1
平台依赖
char:-128到127
我没想到的是,LLONG_MIN为0,LLONG_MAX为-1,UINT_MAX,ULONG_MAX和ULLONG_MAX为-1.这里发生了什么?
你正在使用错误的格式,%d
期待int
,尝试
printf("signed long int: %ld to %ld\n", LONG_MIN, LONG_MAX);
printf("signed long long int: %lld to %lld\n", LLONG_MIN, LLONG_MAX);
Run Code Online (Sandbox Code Playgroud)
和
printf("unsigned int: 0 to %u\n", UINT_MAX);
printf("unsigned long int: 0 to %lu\n", ULONG_MAX);
printf("unsigned long long int: 0 to %llu\n", ULLONG_MAX);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
277 次 |
最近记录: |