相关疑难解决方法(0)

什么是严格别名规则?

当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?

c strict-aliasing undefined-behavior type-punning

778
推荐指数
10
解决办法
19万
查看次数

C++ 11是否添加了C99限制说明符?如果没有,为什么不呢?

restrict是一个C99功能,它最近得到了很多关注,允许编译器对指针执行"以前只有fortran"的优化.这也是微软最近宣布的与C++ AMP规范基础相同的关键词.

该关键字实际上是在FCD中吗?如果没有,是否有特定原因被省略?

c++ c++11 c++-amp

30
推荐指数
4
解决办法
6895
查看次数

快速1/X除法(倒数)

如果精度不是至关重要的话,有没有办法在速度方面改善倒数(在X上除1)?

所以,我需要计算1/X. 是否有一些解决方法,所以我失去了精度,但做得更快?

c++ performance

22
推荐指数
2
解决办法
1万
查看次数

将char初始化为256

我的好奇心让我变得更好.编写代码时会发生什么(或确实发生):

char pseudo_char = 256;
Run Code Online (Sandbox Code Playgroud)

它会存储值为256的虚拟字符吗?或者这是非法的,永远不应该这样做?

c++ ascii char

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

C ++ 20中严格的别名规则是否允许在标准c ++ Unicode字符和下划线类型之间使用“ reinterpret_cast”?

执行C++20严格别名规则 [basic.lval] / 11任意允许下...

  1. 介于char*和之间char8_t*
string str = "string";
u8string u8str { (char8_t*) &*str.data() }; // c++20 u8string

u8string u8str2 = u8"zß?"
string str2 { (char*) u8str2.data() };
Run Code Online (Sandbox Code Playgroud)
  1. 投之间uint32_t*uint_least32_t*char32_t*
vector<uint32_t> ui32vec = { 0x007a, 0x00df, 0x6c34, 0x0001f34c };
u32string u32str { (char32_t*) &*ui32vec.data(), ui32vec.size() };

u32string u32str2 = U"zß?"
vector<uint32_t> ui32vec2 { (uint32_t*) &*u32str2.begin(),
                            (uint32_t*) &*u32str2.end() };
Run Code Online (Sandbox Code Playgroud)
  1. 投之间uint16_t*uint_least16_t*char16_t*
vector<uint16_t> ui16vec = { 0x007a, …
Run Code Online (Sandbox Code Playgroud)

c++ strict-aliasing undefined-behavior c++20

2
推荐指数
1
解决办法
156
查看次数