ICode9

精准搜索请尝试: 精确搜索
  • c – 如何实现没有未定义行为的快速逆sqrt?2019-10-06 08:16:58

    参见英文答案 > What’s a proper way of type-punning a float to an int and vice-versa?                                    7个 根据我对strict aliasing rule的理解,fast inverse square root的此代码将导致C中的未定义行为: float Q_r

  • c – `reinterpret_cast`是`T *`到’T(*)[N]`是不确定的行为?2019-10-04 08:14:59

    请考虑以下情形: std::array<int, 8> a; auto p = reinterpret_cast<int(*)[8]>(a.data()); (*p)[0] = 42; 这是未定义的行为吗?我觉得是这样的. > a.data()返回一个int *,它与int(*)[8]不同 > cppreference上的type aliasing rules似乎表明reinterpret_cast无效>作为程序员,我知道

  • c – placement new的返回值与其操作数的转换值之间是否存在(语义)差异?2019-09-18 13:05:09

    放置new的返回值与其操作数的转换值之间是否存在(语义)差异? struct Foo { ... }; char buffer[...]; Foo *a = new(buffer) Foo; Foo *b = reinterpret_cast<Foo *>(buffer); a和b在某种程度上有所不同吗? 编辑:根据DaBler的评论,这个问题告诉我们,如果使用const / reference成员

  • c – 什么时候类型惩罚指针在实践中是安全的?2019-09-10 18:06:23

    我的一位同事正在研究与二进制数据阵列一起使用的C代码.在某些地方,他的代码就像 char *bytes = ... T *p = (T*) bytes; T v = p[i]; // UB 这里,T有时可以是short或int(分别假设为16和32位). 现在,与我的同事不同,我属于“没有UB,如果可能的话”阵营,而他更像是“如果有效,那就

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有