小编Jor*_*elo的帖子

取数组地址时的不同指针算法结果

程序:

#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.为什么?

c pointers language-lawyer

50
推荐指数
3
解决办法
3055
查看次数

浮点NaN有效载荷有什么用?

我知道IEEE 754定义NaN具有以下按位表示:

  • 符号位可以是01
  • 指数字段包含所有1
  • 尾数的一些位用于指定它是安静的NaN还是信号NaN
  • 尾数不能是所有0位,因为该位模式被保留用于表示无穷大
  • 尾数的剩余比特形成有效载荷

当计算输入为NaN时,有效载荷会传播(就像整个NaN一样)到浮点计算的结果,尽管我不知道这种传播的细节,或者标准是否指定了如何完成.谁设置原始有效载荷?如果我添加两个具有不同有效负载的NaN会发生什么?

但最重要的是:我从未见过以前使用的NaN有效载荷.这个有效载荷字段有什么用途?

floating-point nan ieee-754

10
推荐指数
2
解决办法
950
查看次数

当 memcpy 应该足够时,为什么 wmemcpy 存在?

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)

c memcpy

5
推荐指数
1
解决办法
1677
查看次数

标签 统计

c ×2

floating-point ×1

ieee-754 ×1

language-lawyer ×1

memcpy ×1

nan ×1

pointers ×1