c 语言文件名变量,07 C 语言中的变量类型

本文通过对比在不同硬件平台上运行的C语言程序输出,揭示了不同处理器架构(如arm64、arm32、x86_64)对整型、浮点型数据表示范围的影响。强调了在C语言编程时考虑硬件差异的重要性,特别是对于数值范围敏感的程序,正确选择变量类型以避免溢出错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将上面的程序粘贴到文本编辑器中,然后以 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 开始的数值。

不同的计算机硬件体系结构,使得数值的表示范围会发生变化。对于数值范围敏感的程序,一定要处理好变量类型,防止数值过大造成程序错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值