- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据文档(https://golang.org/pkg/unsafe/#Sizeof)unsafe.Sizeof
返回给定表达式的大小(以字节为单位)。理想情况下,任何给定表达式的大小都可以用 uint32
表示。或 uint64
.那为什么 Golang 返回一个 uintptr
反而?这不是很困惑吗?一个 uintptr
应该保存一个指向某个数据值的指针,但在这种情况下,它实际上不是一个指针,它只是一个数字,对吗?
最佳答案
评论中有很多很好的答案,归结为“因为它足够大,但又不太大”。不过,我认为从历史的角度来看这可能会有所帮助,特别注意这一切是如何在 C 编程语言中发生的。
在非常古老的(准标准)C 中,如果您及时回溯,甚至没有明确的 unsigned
整数类型。 PDP-11 具有:
char
, 8 位,有符号; int
, 16 位,有符号;和 int i;
int *u;
你是如何制作两个整数的,
i
正在签名,和
u
未签名。设置
i
到 32767 (0x7fff) 然后增加它给你 -32768 (0x8000),它逐渐增加到 -1 (0xffff) 然后为零。设置
u
到 32767,然后增加它给你 32768,逐渐增加到 65535,然后翻转到零。
struct {
int csr;
int blk;
int bar;
int bcr;
};
0177440->bcr = count;
0177440->blk = block;
0177440->bar = addr;
0177440->csr = READ | GO;
这可能就是告诉设备读取一些字节或 block 的方式。
st_ino
中的
struct stat
都使用这样的前缀:
st_ino
只是表示“一些整数偏移量”,您可以将
st_ino
成员与任何指针一起使用,甚至使用一个普通变量。前缀意味着您可以
#include
多个 header 而不会使其结构成员名称发生冲突。)
unsigned
整数类型,而不是将指针作为无符号整数压入服务,Steve Johnson 的 PCC 编译器转为
unsigned
变成一个修饰符,可以应用于
char
和
short
以及
int
.进行了大量的实验。最终,在 1989 年,C 首次使用我们现在拥有的大部分语法和语义进行了标准化(尽管新标准添加了新类型和许多函数,等等)。
When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++. [laughter] ... [Returning to Go,] we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.
关于go - 为什么 unsafe.Sizeof 返回一个 uintptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64109708/
这个问题已经有答案了: Why isn't sizeof for a struct equal to the sum of sizeof of each member? (13 个回答) 已关闭 8
先生。 Stroustrup 在他的新书(TCPL 第 4 版)第 149 页写下了以下内容 1 N && sizeof(long)<=N任何 N 值的实现,更不用说任何人都会考虑使用 wchar_t
如 [5.3.3/3] 所述(expr.sizeof,工作草案): The sizeof operator can be applied to a pointer to a function, but
从C标准来看,int至少有16bit,long至少有32bit,long long如果有的话至少有64bit(有些平台可能不支持)。只是想知道标题中的句子是否总是正确的。 最佳答案 没有。该标准仅定义
我运行的是 Windows 7(64 位)。 这个问题与此处找到的问题相同: long on a 64 bit machine 但更深入,因为它处理更多的数据类型并适用到 C 或 C++,而不是 C#
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
这个问题在这里已经有了答案: Length of array in function argument (9 个回答) 关闭 9 年前。 #include void printS(char []);
我承认这三个都有不同的含义。但是,我不明白这些具体情况适用于哪些特定情况。任何人都可以分享每个例子吗?谢谢。 malloc(sizeof(int)) malloc(size
To avoid things quietly breaking if you change the array size, I suggest std::copy(a, a + sizeof(a)/
我在 python 中注意到以下事实: >>> (1, 2, 3).__sizeof__() 48 >>> [1, 2, 3].__sizeof__() 64 我理解列表和元组之间的区别,但我希望它们
是否存在与指针大小相同的整数类型?保证所有微架构? 最佳答案 根据 this Wikipedia page ,在 C99 中,您的 stdint.h header 可能声明了 intptr_t 和 u
我注意到 int 和 double 的大小与使用函数 MPI_Type_size(MPI_INT, &MPI_INT_SIZE); 计算的不同。这是否意味着 sizeof(MPI_INT) 返回了错误
这个问题已经有答案了: How to find the size of an array (from a pointer pointing to the first element array)? (
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
为什么 sizeof 运算符返回的结构大小大于该结构成员的总大小? 最佳答案 这是因为添加了填充以满足对齐约束。 Data structure alignment影响程序的性能和正确性: 未对齐的访问
我是一名优秀的程序员,十分优秀!