问题标签 [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.
c - 您遇到的 C 的常见未定义/未指定行为是什么?
C 语言中未指定行为的一个示例是函数参数的求值顺序。它可能是从左到右或从右到左,你只是不知道。这将影响评估方式foo(c++, c)
或foo(++c, c)
评估方式。
还有哪些其他未指明的行为会让不知情的程序员感到惊讶?
c++ - 什么是严格的别名规则?
当询问C 中常见的未定义行为时,人们有时会提到严格的别名规则。
他们在说什么?
c++ - C++ 程序员应该了解哪些常见的未定义行为?
C++ 程序员应该了解哪些常见的未定义行为?
说,比如:
c++ - strcpy 中的分段错误
考虑下面的程序
运行此程序时会出现分段错误。
但是当 strcpy 替换为以下时,程序运行良好。
所以问题是当尝试复制到 str 任何其他长度超过 5 个字符的字符串时它应该崩溃。
那么为什么它不会因为“Hello1234567”而崩溃,而只会因为“Hello12345678”而崩溃,即长度为 13 或超过 13 的字符串。
该程序在 32 位机器上运行。
c++ - 我们如何解释表达式 (++x)+(++x)+(++x) 的结果?
我希望输出是11
,但实际上是12
。为什么?
c++ - 是否允许使用 const_cast 对 const 对象进行只读访问?
在 C++ 中,我有一个只需要对数组进行只读访问但被错误地声明为接收非常量指针的函数:
我需要为 const 数组调用它:
这将是未定义的行为吗?如果是这样 - 程序何时会运行到 UB - 当执行 const_cast 并调用函数或访问数组时?
debugging - 有没有办法将 GUID 与随机数区分开来?
在调试晦涩的代码缺陷时,能够将 GUID 与随机数据区分开来可能很有用。
在 Windows 上,生成的每个 GUID 都是版本 4,因此它具有“4”作为第三部分的前半字节。因此,如果 16 字节序列违反了该规则,则它不是版本 4 GUID。例如,
可以是版本 4 GUID 或其他任何东西,但是
不是版本 4 GUID。
16 字节内存块是否是有效 GUID 的其他标志是什么?
c - 关于 C 中联合的问题 - 存储为一种类型并读取为另一种类型 - 是否定义了实现?
我正在从 K&R 阅读 C 中的 union,据我了解,union 中的单个变量可以保存多种类型中的任何一种,如果某些内容作为一种类型存储并作为另一种类型提取,则结果纯粹是实现定义的。
现在请检查此代码段:
输出:
在这里,我在 中分配值,但同时从和中u.ch
检索。是否定义了实现?还是我在做一些非常愚蠢的事情?u.ch
u.i
我知道对于大多数其他人来说,这可能看起来很初学者,但我无法弄清楚该输出背后的原因。
谢谢。
c# - C# 中具有未定义行为的代码
在 C++ 中有很多方法可以编写可编译的代码,但会产生未定义的行为(维基百科)。C#中有类似的东西吗?我们可以用 C# 编写可编译但行为未定义的代码吗?