1
360
|
2
92
经典的C语言(Brian Kernighan和Dennis Ritchie在C编程语言中描述的C语言的早期方言,Prentice Hall,1978)没有提供
Explained in detail at embedded.com (with a very good example) |
3
65
简而言之,
尺寸不应该是负数,事实上
所以,你会问,为什么不使用
所以,你问,为什么不使用
使用
|
4
48
大小类型是sizeof运算符返回的类型。它是一个无符号整数,能够以字节表示主机上支持的任何内存范围的大小。它(通常)与ptrdiff_t有关,因为ptrdiff_t是一个有符号整数值,这样sizeof(ptrdiff_t)和sizeof(sizeof)相等。 编写C代码时,应该 总是 处理内存范围时,请使用大小t。 另一方面,int类型基本上定义为主机可以用来最有效地执行整数运算的(有符号)整数值的大小。例如,在许多老式PC机上,sizeof(size_t)的值为4(字节),sizeof(int)的值为2(字节)。16位算术比32位算术快,尽管CPU可以处理高达4 GiB的(逻辑)内存空间。 只有当您关心效率时才使用int类型,因为它的实际精度在很大程度上取决于编译器选项和机器体系结构。特别是,C标准规定了以下不变量:sizeof(char)<=sizeof(short)<=sizeof(int)<=sizeof(long),对程序员可用于这些基本类型的精度的实际表示没有其他限制。 注意:这与Java中的不同,它实际上为每个类型的字符“字节”、“短”、“int”和“长”指定了位精度。 |
5
23
类型大小必须足够大以存储任何可能对象的大小。无符号int不必满足该条件。 例如,在64位系统中,in t和unsigned in t的宽度可能为32位,但大小必须足够大,以存储大于4g的数字。 |
6
3
本节选自glibc手册0.02,在研究该主题时也可能相关:
在2.4版之前,gcc的大小、类型和版本存在潜在问题。ANSIC要求大小不总是无符号类型。为了与现有系统的头文件兼容,gcc在
要求大小不带符号的GNU C库代码是正确的。将大小定义为带符号类型不正确。我们计划在2.4版中,gcc总是将大小定义为无符号类型,并且
同时,我们通过明确地告诉GCC在编译GNUC库时使用无符号类型来解决这个问题。` configure'将自动检测gcc使用什么类型的大小来覆盖它(如果需要)。 |
7
1
如果我的编译器设置为32位,
|
8
-3
大小是指针的大小。 因此,在32位或通用的ILP32(整数、长、指针)中,模型大小为32位。 在64位或者普通的lp64(long,pointer)中,模型大小为64位(整数仍然是32位)。 还有其他的模型,但这些模型是G++使用的(至少在默认情况下是这样) |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |