-
(x+1) > x 如何评估为 0 和 1?
我正在学习未定义的行为,并在没有任何明确解释的情况下偶然发现了这段代码: <pre class="lang-c prett -
有符号整数溢出是未定义的行为还是已定义的实现?
<pre><code>#include <limits.h> int main(){ int a = UINT_MAX; return 0; } </code></pre> 我定义了这个 UB 或实现吗?</p -
当前一行有多个“if”语句时,C++“else”语句
下面的C++程序 <pre><code>#include <iostream> int main() { for(int i=0; i<5; i++) for(int j=0; j<5; j++){ -
命名空间范围静态存储持续时间变量的初始化线程安全吗?
描述了命名空间范围静态存储持续时间对象的初始化规则<a href="https://eel.is/c++draft/basic.start" rel="nofollow no -
位移超出允许范围
我们在生产中有一个代码,它在某些情况下可能会将 32 位无符号整数左移超过 31 位。 我知道这被认为 -
是否可以在不复制对象或未定义行为的情况下将 Base& 转换为 Derived&?
问题:我有一个设计为非常便携的类 (PortableFoo)。它包含一个作用域类 PortableBar。周围的代码库(称之为 -
使用 javascript 重新加载当前页面时的未知行为
在使用 javascript XMLHTTPRequest 执行一些更新后,我使用: <pre><code>location.reload(true); </code></pre> 为了得 -
在 C++ 中,用自身初始化全局变量是否具有未定义的行为? [basic.life]/1.2[basic.life]/6
<pre><code>int i = i; int main() { int a = a; return 0; } </code></pre> <code>int a = a</code> 肯定有未定义的行为 (UB), -
如果我故意不从非 void 函数返回,会发生什么?
我正在尝试使用表达式模板编写代码,以允许我对不同类型的对象执行操作,并且我正在尝试自定义该 -
C++ 标准是否对在空容器上运行的算法有任何保证?
例如 <pre class="lang-cpp prettyprint-override"><code>#include <algorithm> #include <iostream> #include <numeric> -
&array[i] 总是等价于 (array + i) 吗?
最近看到一个这样的C代码: <pre><code>#include <stdio.h> int main(void) { int array[5] = {1, 2, 3, 4, 5}; -
是否允许为另一个过程的可选参数传递一个不存在的假定形状数组?
在这个最小的例子中,是否允许传递 <code>y</code> 的可选哑参数 <code>test_wrapper</code> 作为对应可选哑参数 -
序列化文件系统时未定义的行为::路径对象
我有以下代码在测试 filesystem::path 对象的序列化和反序列化时运行良好: <pre><code>#include <filesystem&g -
数组元素即使在分配之后也有 0 值
所以我在 c 中实现了一个堆栈。现在初始堆栈大小为 5,每次达到限制时我都会将其加倍。我将其中的值 -
是否使用对通过 reinterpret_cast 未定义行为进行转换的指针的引用?
下面的代码是UB吗? <pre><code>int i = 5; void *p = &i; int* &r = reinterpret_cast<int* &>(p); int* p -
此 C 代码会导致未定义行为吗?
我知道: <pre><code>int b = 1, c = 2, d = 3, e = 4; printf("%d %d %d", ++b, b, b++); </code></pre> 导致未定义的 -
如何通过相当小的代码更改来修复未定义的行为
在我们项目的核心中,我们有以下代码: <pre><code>template<typename T> T& get_factory_instance(bool reset = -
为什么 unsigned char 具有与其他数据类型不同的默认初始化行为?
我正在阅读有关默认初始化的 cppreference 页面,我注意到一个部分说明了以下内容: <pre class="lang-cpp p -
析构函数执行后缓冲区的值可以改变吗
代码: <pre><code>#include <cstdio> #include <new> struct Foo { char ch; ~Foo() { ++ch; } }; int main() { stat -
为什么 GCC 和 MSVC 不基于未初始化的变量进行优化?我可以强迫他们吗? 脚注
考虑一些使用未初始化堆栈变量的极其简单的代码(或更复杂的代码,请参见下文<sup>1</sup>),例如:</ -
超出 C++ 的界限和未定义的行为
我知道在 C++ 中访问缓冲区边界是未定义的行为。<br/> 以下是来自 cppreference 的示例: <pre><code>int table -
为什么我可以在 constexpr 函数中修改 const_cast-ed 对象?
我一直假设: <ul> <li>写入 <code>const_cast</code> ed 变量是 UB</li> <li>constexpr 中不允许使用 UB</li> </ul> 所 -
ISO/IEC 9899:2011 6.7.6.3 语义 7 是什么意思?
首先,这是原文(ISO/IEC 9899:2011 6.7.6.3 Semantics 7): <块引用> 将参数声明为“类型数组”应调整为 -
在 C90 中使用部分初始化的结构时的未定义行为
让我们考虑以下代码: <pre><code>struct M { unsigned char a; unsigned char b; }; void pass_by_value(struct M); int mai -
C++ int 枚举类 UB
我有一个 <code>enum</code> 看起来像这样: <pre class="lang-cpp prettyprint-override"><code>enum class MY_TYPE : int32_t{ -
如何找到替换传递的函数参数的未定义行为?
我正在尝试调用 <code>fileUtilCopyRecurse</code> 为其提供您可以在下面看到的参数。当我进入函数时,参数 2-4 -
转换视图的 std::prev 上的未定义行为
考虑以下代码 (<a href="https://godbolt.org/z/afbqbGbvs" rel="noreferrer">click here for godbolt</a>): <pre><code>#include < -
按地址返回本地值(数组)
我有一个关于按地址从函数返回局部变量的问题。 我知道每个局部变量都有一个生命周期。 但是当我返 -
分配给临时的、GCC 9.3 错误或格式错误的代码/UB?
这个问题很短,我很抱歉没有详细说明我的时间不够。 我遇到了一个对我来说似乎是错误的东西。 -
如何在没有未定义行为的情况下重新解释或转换具有已知内存布局的对象
我有一个带有 <code>transposedView()</code> 方法的矩阵类,我多年来一直使用它作为行向量和列向量之间的“