[求助] 有的资料中说long是4个字节,有的说是8个字节,请问单片机C语言中LONG到底是几个字

一沙一世   2023-12-12 08:57 楼主

有的资料中说long是4个字节,有的说是8个字节,请问一下,单片机C语言编程中LONG到底是几个字节?

有的资料中说long是4个字节,有的说是8个字节,请问单片机C语言中LONG到底是几个字节?

如下所示:

资料一:

基本整型    (int)占4个字节,范围 -2147483648 ~ 2147483647

长整型      (long)占4个字节,范围-2147483648~ 2147483647

资料二:

int -2147483648~2147483647 4字节 4294967296
unsigned int 0~4294967295 4字节 4294967296
long -9223372036854775808~9223372036854775807 8字节 18446744073709551616

回复评论 (10)

long 类型  4字节   long long 类型  8字节

点赞  2023-12-12 09:04

四个还是八个字节,与编译器有关,不同编译器有不同的规定。

点赞  2023-12-12 09:06

我感觉和系统位数有关的。不同位数的单片机的long的字节数是不一样的。

点赞  2023-12-12 09:06

编译器+C标准

不同的C标准不一样,现在又C99 C11 C..

单片机很多都支持C99 ,这个里面又个long long 是8字节。

其他的可以去看它支持哪个标准。

9[`6$VSP]08O7%S26WRY~IR.png  

 

 

linux的gcc一般是8字节,不过这些也与gcc 编译的时候带的参数有关。具体问题要具体分析。

 

本帖最后由 damiaa 于 2023-12-12 09:52 编辑
点赞  2023-12-12 09:29
引用: maychang 发表于 2023-12-12 09:06 四个还是八个字节,与编译器有关,不同编译器有不同的规定。

keil5,请问,除了编译器外跟具体的单片机比如51还是ARM也有关系吗?

点赞  2023-12-12 09:50
引用: 一沙一世 发表于 2023-12-12 09:50 keil5,请问,除了编译器外跟具体的单片机比如51还是ARM也有关系吗?

【请问,除了编译器外跟具体的单片机比如51还是ARM也有关系吗?】

当然有关系。

点赞  2023-12-12 10:15

我也是电子技术小白,感谢大佬们分享,我以后也发帖,希望多多指教,关于这个长度,还有带符号值的计算,我一直也搞不明白,还有补码,到底是咋回事,有大佬回复一下吗

 

点赞  2023-12-12 13:25

这个只跟编译器有关,跟C标准无关,每种类型的大小都在limits.h有说明。网上乱七八糟的一些资料,包括一些垃圾书籍都不要参考。

点赞  2023-12-12 14:26

新标准可以用类似 int32_t 这样的明确限定长度。

默认摸鱼,再摸鱼。2022、9、28
点赞  2023-12-14 15:50

感觉这个跟编译器有关,以前用的KEIL,INT型是2字节,后面换用高一点的版本,INT变成4字节了,

点赞  2023-12-19 10:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复