我的处理器上C中的int,short和其他数据类型的范围?
我正在读一本旧的C书,据此而言
int范围值从-32768到+32767。
如果我的机器可以容纳比该限制更大的int,我如何找到特定于我的机器的这些数据类型(short,int,long,double,float)的范围?
那有什么方法吗?
从这里 ,看看脚注:
- 实际值取决于特定的系统和库实现,但应反映目标平台中这些类型的限制。
如果您在系统上运行以下代码,它应该提供一些见解,因为返回的值可能与上述链接中的值不同或不同。
#include #include #include int main() { printf("\t\tUsing library definitions...\n"); printf("CHAR\n"); printf("signed char max: %d\n", SCHAR_MAX); printf("unsigned char max: %u\n", UCHAR_MAX); // Note use of u, formatting output printf("signed char min: %d\n", SCHAR_MIN); printf("SHORT\n"); printf("signed short min: %d\n", SHRT_MIN); printf("signed short max: %d\n", SHRT_MAX); printf("unsigned short max: %d\n", USHRT_MAX); printf("INT\n"); printf("signed int max: %d\n", INT_MAX); printf("unsigned int max: %u\n", UINT_MAX); printf("signed int min: %d\n", INT_MIN); printf("LONG\n"); printf("signed long max: %d\n", LONG_MAX); printf("unsigned long max: %u\n", ULONG_MAX); printf("signed long min: %d\n", LONG_MIN); printf("FLOAT\n"); printf("signed float max: %e\n", FLT_MAX); printf("signed float min: %e\n", FLT_MIN); printf("DOUBLE\n"); printf("signed double max: %e\n", DBL_MAX); printf("signed double min: %e\n", DBL_MIN); return 0; }
我希望我能正确理解你的问题。
您可以查看limits.h
,您可以在其中找到整数类型的大小。 看看这里 。
此标头定义了常量,其中包含特定系统和使用的编译器实现的基本整数类型的限制。
Header
提供了这些信息,而
允许您指定特定的宽度整数:
INT_MAX INT_MIN int32_t value; // to have an integer of exactly 32 bits