相关疑难解决方法(0)

201
推荐指数
6
解决办法
6万
查看次数

陷阱表示

  1. 什么是C中的陷阱表示(某些示例可能有帮助)?这适用于C++吗?

    float f=3.5;
    int *pi = (int*)&f;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑:我知道'pi'违反了别名规则,根据C标准它是UB.至少在海湾合作委员会它没有产生任何错误,但警告.在这个实现(即GCC)中,假设sizeof(int) == sizeof(float)do f*pi具有相同的二进制表示/模式?MSVC怎么样?

c c++ gcc visual-studio-2010

63
推荐指数
3
解决办法
1万
查看次数

指向数组第一个元素之前的一个的指针是 UB。这是什么时候第一次这样定义的?

从 C17 开始,递减指向数组第一个元素的指针是未定义的行为。这个答案引用了C17标准的说法

C17 6.5.6/8

如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则求值不会产生溢出;否则,行为是未定义的。

这是最早定义的标准吗?早期标准中如何定义此类操作?以前合法吗?

c pointer-arithmetic language-lawyer

0
推荐指数
1
解决办法
105
查看次数