Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
(为什么)使用未初始化的变量是未定义的行为?
如果我有 unsigned int x x x 很明显x should在这个表达式之后为零 但是我到处都看到 他们说behavior这段代码的值是未定义的 而不仅仅是x 直到减法之前 两个问题 Is the behavior这段代码确实未定
c
undefinedbehavior
initialization
未定义的行为追溯是否意味着不能保证早期可见的副作用?
在 C 中 如果我正确理解措辞 编译器可以假设不会发生 UB 从而影响将遇到 UB 但尚未遇到的执行路径中的行为 甚至是 I O 等可见的副作用 在抽象机遇到 UB 之前 C 是否需要 正确 执行程序直至最后可见的副作用 编译器似乎以这种方
c
gcc
languagelawyer
compileroptimization
undefinedbehavior
C 是否有与 C++ 中的 std::less 等效的东西?
我最近正在回答一个关于 do 的未定义行为的问题p lt q在C中当p and q是指向不同对象 数组的指针 这让我想到 C 具有相同的 未定义的 行为 lt 在这种情况下 还提供了标准库模板std less保证返回与 lt 当指针可以比较
c
pointers
undefinedbehavior
memorymodel
memorysegmentation
将 char 数组转换为对象指针 - 这是 UB 吗?
我最近看到一个这样的类 它用于 按需 构造对象 而不必出于各种原因使用动态内存分配 include
c
pointers
c14
undefinedbehavior
为什么它返回一个随机值而不是我给函数的值?
在C程序中 有一个交换函数 该函数采用一个名为x的参数 我希望它通过更改主函数内交换函数中的x值来返回它 当我将参数视为变量时 我想要它 但是当我直接为参数设置整数值时 程序会产生随机输出 include
c
Assembly
gcc
undefinedbehavior
转换为不相关的引用类型是否违反了严格的别名规则?
严格的别名规则说 如果程序尝试通过以下方式访问对象的存储值 除以下类型之一之外的左值 其行为是 不明确的 对象的动态类型 对象动态类型的 cv 限定版本 与对象的动态类型类似 如 4 4 中定义 的类型 与对象的动态类型相对应的有符号或无符
c
languagelawyer
undefinedbehavior
reinterpretcast
strictaliasing
#define/#undef 具有特殊含义的标识符是否属于未定义行为?
对问题的回答禁用 gcc 中的覆盖检查 https stackoverflow com q 30303228 1708801建议使用 Doverride 在命令行上禁用错误使用的错误override http en cppreference
c
C11
languagelawyer
undefinedbehavior
当 b 大于 a 中的位数时,右移 (a >> b) 的未定义行为?
显然 右移操作的行为 a gt gt b 在 C 和 C 中未定义b gt sizeof a CHAR BIT 而在正常情况下 由于右移而从左侧引入的 新位 等于零 为什么这种未定义的行为比将结果设置为零更好b gt sizeof a CH
c
undefinedbehavior
bitshift
c14
while(i--) s+= a[i]; 是吗?包含 C 和 C++ 中未定义的行为?
考虑简单的代码 include stdio h define N 10U int main int a N 0 unsigned int i N int s 0 Fill a while i s a i printf Sum is d n
c
undefinedbehavior
如果 std::numeric_limits
::is_iec559 为 true,这是否意味着我可以以明确定义的方式提取指数和尾数?
我已经构建了一个自定义版本frexp https en cppreference com w cpp numeric math frexp auto frexp float f noexcept static assert std nume
c
floatingpoint
languagelawyer
undefinedbehavior
结构对齐和类型重新解释
假设我有两种类型 A 和 B 然后我做这个类型 struct Pair A a B b 现在我有一个这样的功能 void function Pair pair 让我们假设function只会使用a该对的一部分 那么这样使用和调用函数是不是未
c
struct
undefinedbehavior
严格的别名规则是什么?
当询问有关C 中常见的未定义行为 https stackoverflow com questions 98340 what are the common undefinedunspecified behavior for c that yo
c
undefinedbehavior
strictaliasing
typepunning
由 lambda 包装器对可变参数模板函数调用引起的 gcc 分段错误
我今天花了好几个小时试图理解为什么这段代码 http melpon org wandbox permlink HfrjVkob1QP476QT出现段错误g 6 2 and g 7 0 同时按预期愉快地工作clang 3 9 and 4 0
c
segmentationfault
c14
undefinedbehavior
ubsan
gcc 会跳过此检查有符号整数溢出吗?
例如 给出以下代码 int f int n if n lt 0 return 0 n n 100 if n lt 0 return 0 return n 假设您传入一个非常接近整数溢出的数字 小于 100 编译器会生成给您负返回的代码吗 以
c
gcc
compilerconstruction
undefinedbehavior
integeroverflow
硬件 SIMD 向量指针和相应类型之间的“reinterpret_cast”是否是未定义的行为?
是否合法reinterpret cast a float to a m256 和访问float通过不同的指针类型的对象 constexpr size t m256 float step sz sizeof m256 sizeof float
c
x86
languagelawyer
undefinedbehavior
intrinsics
当传递给函数时,如何强制警告使用错误大小的数组?
假设您有一个以字符串作为参数的函数 void foo char arg 如果我们确定数组 不要与字符串长度混淆 谢谢 chux 将始终具有一定的大小 假设为 8 那么我们可以这样做 void bar char arg 8 然后这样称呼它 c
Arrays
c
casting
languagelawyer
undefinedbehavior
这种类型的双关语定义明确吗?
阅读引用这个答案关于严格的别名规则 我在 C 11 中看到以下内容 如果程序尝试通过以下类型之一以外的泛左值访问对象的存储值 则行为未定义 聚合或联合类型 其元素或非静态数据成员中包括上述类型之一 递归地包括子聚合或包含的联合的元素或非静态
c
undefinedbehavior
typepunning
在 C/C++ 中写入非打印字符的行为是什么?
如果字符是通过写入的 则写入非打印字符的行为是否未定义或实现定义printf fprintf 我很困惑 因为 C 标准 N1570 5 2 2 中的单词只讨论打印字符和字母转义序列的显示语义 另外 如果字符是通过写的呢 std ostrea
c
IO
standards
undefinedbehavior
在 C 和 C++ 中访问数组超出限制 [重复]
这个问题在这里已经有答案了 int data 8 data 9 1 C 标准对此有何规定 这是未定义的行为吗 至少C编译器 gcc std c99 pedantic W Wall 没有对此说什么 访问数组边界之外是未定义的行为 从c99标准
c
Arrays
undefinedbehavior
为什么 Rust 不允许可变别名?
Rust 不允许这种代码 因为它不安全 fn main let mut i 42 let ref to i 1 unsafe mut mut i as mut i32 let ref to i 2 unsafe mut mut i as m
Rust
undefinedbehavior
lifetime
«
1 ...
6
7
8
9
10
11
12
»