1069得票6回答
什么是序列点,它们与未定义行为有什么关系?

"sequence points"是什么意思? 未定义行为与序列点之间有什么关系? 我经常使用像a[++i] = i;这样有趣且复杂的表达方式,让自己感觉更好。为什么我应该停止使用它们? 如果你已经阅读了这篇文章,请务必访问后续问题未定义行为和序列点重新加载。 (注:这是Stack...

985得票11回答
严格别名规则是什么?

当谈到C语言中的常见未定义行为时,人们有时会提到严格别名规则。 他们在说什么?

912得票15回答
这些使用前置和后置递增的结构为什么会产生未定义行为?

#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i)...

650得票9回答
未定义行为、未指定行为和实现定义行为

在C和C++中,什么是未定义行为(UB)?又有哪些未指定行为和实现定义行为呢?它们之间有何区别?

571得票6回答
C++标准允许未初始化的布尔值导致程序崩溃吗?

我知道在C++中的{{未定义行为}}可以让编译器做任何它想做的事情。然而,我遇到了一个崩溃问题,这让我感到惊讶,因为我认为代码足够安全。 在这种情况下,真正的问题只发生在使用特定编译器的特定平台上,并且仅在启用优化时才会出现。 我尝试了几种方法来复制问题并将其简化到最大程度。这里有一个名为...

339得票22回答
未初始化的局部变量是否是最快的随机数生成器?

我知道未初始化的本地变量是未定义行为(UB),而且该值可能具有陷阱表示法,这可能会影响后续操作,但有时我只想使用随机数进行视觉呈现,并且不会在程序的其他部分进一步使用它们,例如,在视觉效果中使用随机颜色设置某些内容,例如:void updateEffect(){ for(int i=0...

281得票11回答
为什么 f(i=-1, i=-1) 是未定义行为?

我正在阅读关于求值顺序违规的内容,他们给出了一个让我感到困惑的示例。 1) If a side effect on a scalar object is un-sequenced relative to another side effect on the same scalar obje...

267得票7回答
为什么无符号整数溢出是定义行为,而有符号整数溢出不是?

无符号整数溢出在C和C++标准中都有明确定义。例如,C99标准(§6.2.5/9)规定: 涉及无符号操作数的计算永远不会溢出,因为不能用结果类型表示的结果将对能够表示的结果类型最大值加1取模 然而,两个标准都声明有符号整数溢出是未定义的行为。同样来自C99标准 (§3.4.3/1): ...

243得票14回答
为什么这个for循环在某些平台上退出而在其他平台上不退出?

我最近开始学习C语言,并正在参加一门以C语言为主题的课程。目前我正在玩弄循环,并遇到了一些奇怪的行为,我不知道如何解释。#include <stdio.h> int main() { int array[10],i; for (i = 0; i <=10 ; i+...

200得票11回答
C++程序员应该知道的所有常见未定义行为是什么?

一个C++程序员应该知道的常见未定义行为有哪些? 例如:a[i] = i++;