程序:
#include<stdio.h>
int main(void) {
int x[4];
printf("%p\n", x);
printf("%p\n", x + 1);
printf("%p\n", &x);
printf("%p\n", &x + 1);
}
Run Code Online (Sandbox Code Playgroud)
输出:
$ ./a.out
0xbff93510
0xbff93514
0xbff93510
0xbff93520
$
Run Code Online (Sandbox Code Playgroud)
我希望以下是上述程序的输出.例如:
x // 0x100
x+1 // 0x104 Because x is an integer array
&x // 0x100 Address of array
&x+1 // 0x104
Run Code Online (Sandbox Code Playgroud)
但是最后一个陈述的输出与我预期的不同.&x也是数组的地址.因此,在此处递增1将打印地址递增4.但是&x+1地址递增10.为什么?
我知道IEEE 754定义NaN具有以下按位表示:
0或11位0位,因为该位模式被保留用于表示无穷大当计算输入为NaN时,有效载荷会传播(就像整个NaN一样)到浮点计算的结果,尽管我不知道这种传播的细节,或者标准是否指定了如何完成.谁设置原始有效载荷?如果我添加两个具有不同有效负载的NaN会发生什么?
但最重要的是:我从未见过以前使用的NaN有效载荷.这个有效载荷字段有什么用途?
wmemcpy似乎执行相同的操作,memcpy但接受wchar_t*而不是void*。如果这两个代码片段应该具有相同的行为,它的存在如何证明?它有什么有用的目的吗?
memcpy(dest, wchar_array, sizeof(wchar_array));
Run Code Online (Sandbox Code Playgroud)
和
wmemcpy(dest, wchar_array, sizeof(wchar_array) / sizeof(wchar_t));
Run Code Online (Sandbox Code Playgroud)