将上面的程序粘贴到文本编辑器中,然后以 test.c 文件名保存。
在终端命令行中输入
gcc test.c -o test
编译完成后
./test
来执行上面的程序。
我的树莓派4上输出的结果如下:
CHAR_BIT : 8
CHAR_MAX : 255
CHAR_MIN : 0
INT_BIT : 4
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_BIT : 4
LONG_MAX : 2147483647
LONG_MIN : -2147483648
SCHAR_BIT : 1
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_BIT : 2
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_BIT : 1
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_BIT : 4
ULONG_MAX : 4294967295
USHRT_MAX : 65535
Storage size for float : 4
Strage size for double : 8
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Float precision value : 6
Double precision value : 15
这台单板计算机的处理器是 arm64。
在树莓派2上的输出结果如下:
CHAR_BIT : 8
CHAR_MAX : 255
CHAR_MIN : 0
INT_BIT : 4
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_BIT : 4
LONG_MAX : 2147483647
LONG_MIN : -2147483648
SCHAR_BIT : 1
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_BIT : 2
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_BIT : 1
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_BIT : 4
ULONG_MAX : 4294967295
USHRT_MAX : 65535
Storage size for float : 4
Strage size for double : 8
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Float precision value : 6
Double precision value : 15
这台单板计算机的处理器是 arm32。
在我的笔记本电脑上运行的结果如下:
CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_BIT : 4
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_BIT : 8
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_BIT : 1
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_BIT : 2
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_BIT : 1
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_BIT : 8
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535
Storage size for float : 4
Strage size for double : 8
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Float precision value : 6
Double precision value : 15
这台电脑的处理器是 x86_64 架构,也就是大家在市场上买到的家用电脑的架构。
大家可以看到这里有些数值是一样的,但是有些却不同。这就是计算机硬件上的差异,大家在使用 C 语言给硬件编程的时候一定要考虑到这点影响。
2. 小结
C 语言作为一种静态语言,在变量使用之前,要确定变量的类型,用来分配在内存中所需要占用的空间。
C 语言的类型包含了有符号型和无符号型两大类。有符号类型可以表示复数。而无符号类型只能表示从 0 开始的数值。
不同的计算机硬件体系结构,使得数值的表示范围会发生变化。对于数值范围敏感的程序,一定要处理好变量类型,防止数值过大造成程序错误。