问题标签 [undefined-behavior]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
839 浏览

c++ - `x--> 0 && array[x]` 在 C++ 中是明确定义的行为吗?

x当我在左侧后增量时,我可以在布尔表达式的两侧使用它吗?

有问题的行是:

这是通过标准定义的吗?array[x] 将使用新值x还是旧值?

0 投票
2 回答
844 浏览

c++ - “覆盖”时出现Stringstream write()问题

目前,我有一个名为Data. 我正在使用以下方法寻找字符串流的开头:

然后,我尝试将 2 个整数写入字符串流的前 8 个字节(以前,前 8 个字节设置为 0)

使用 Visual C++ 调试器并设置断点时,我可以看到dataLength等于 12 和dataFlags0,因此应该分别写入 12 和 0。

写完2个整数后,好像没有效果。然后我使用以下代码打印我的字符串流数据:

我可以看到我的数据的前 8 个字节仍然是 0,即使我只是用两个整数覆盖了前 12 个字节(其中第一个整数!= 0)。

为什么我的字符串流中的数据没有被正确覆盖?

0 投票
9 回答
2203 浏览

c - C 编程#define?

可能重复:
谁能解释这些未定义的行为(i = i++ + ++i,i = i++ 等……)

我知道代码的输出是什么。

因为#define 在其他程序中工作,所以它在上面的代码中不起作用为什么。?

0 投票
2 回答
576 浏览

c++ - 声明为返回 int 的函数不返回任何内容。这是未定义的行为吗?

这是 C++ 中的有效函数:

以下定义导致 UB:

问题: 下面的表达式语句会导致UB吗?

非常欢迎从标准中引用。

0 投票
0 回答
1320 浏览

c++ - 什么是未定义的行为?

我一直在阅读的这种未定义的行为是什么?为什么恶魔会从我的鼻子里飞出来?

0 投票
3 回答
324 浏览

c++ - 为什么这是未定义的行为?

为什么以下给定表达式会调用未定义的行为?

我的问题受这里Als 问题的影响

0 投票
8 回答
31182 浏览

c++ - const 成员和赋值运算符。如何避免未定义的行为?

回答了关于std::vector of objects 和 const-correctness的问题,并收到了关于未定义行为的评论。我不同意,因此我有一个问题。

考虑具有 const 成员的类:

我想要一个赋值运算符,但我不想const_cast在下面的代码中使用答案之一:

我的解决方案是

我是否有未定义的行为 (UB)?

没有 UB 会有什么解决方案?

0 投票
5 回答
116455 浏览

c++ - 未定义的行为和序列点

什么是“序列点”?

未定义的行为和序列点之间的关系是什么?

我经常使用有趣而复杂的表达方式,例如a[++i] = i;,让自己感觉更好。为什么我要停止使用它们?

如果您已阅读本文,请务必访问后续问题Undefined behavior and sequence points reloaded

(注意:这是对Stack Overflow 的 C++ FAQ 的一个条目。如果您想批评以这种形式提供 FAQ 的想法,那么开始这一切的 meta 上的帖子就是这样做的地方。该问题在C++ 聊天室中进行监控,FAQ 想法最初是从那里开始的,因此您的答案很可能会被提出该想法的人阅读。)
0 投票
4 回答
396 浏览

c++ - 一旦遇到被归类为未定义行为的构造,是否允许 C++ 编译器发出随机代码?

可能重复:
未定义、未指定和实现定义的行为

我试图加深对 C++ 中未定义行为的理解。假设 C++ 编译器将有意检测某些未定义行为的情况 - 例如,在两个序列点之间修改变量两次

一旦那个虚构的编译器可靠地检测到这种情况,它就会说将十个完全随机的机器指令发送到生成的机器代码中。

根据 C++ 标准,任何被归类为 UB 的地方都没有要求发生什么。所描述的虚构编译器是否符合 C++ 标准?

0 投票
3 回答
391 浏览

c++ - C++ 标准中未定义行为段落中的 [Note] 是什么意思?

正如用户 Tony 指出的那样,C++ 标准的第 1.3.12 段中有一个 [Note] 说

允许的未定义行为的范围从完全忽略具有不可预测结果的情况,到在翻译或程序执行期间以环境特征的记录方式表现......

这是否与 UB 的定义相矛盾,即……本国际标准没有要求?我的意思是他们说“没有要求”,然后说“允许的 UB”——就在同一段中。

应该如何解释这个注释?它确实以任何方式限制了UB吗?