小编bum*_*ead的帖子

实现定义的行为是未定义的行为

我开了一个C99标准。通道 4 “一致性”,第 2 页说如下:

如果出现在约束之外的“应”或“不应”要求被违反,则行为未定义。[...]

下面,在第。5 我们看到以下内容:

[...] (2) 它不应产生依赖于任何未指定、未定义或实现定义的行为的输出,并且不应超过任何最小实现限制。

这对我来说似乎表明实现定义的行为是未定义的行为,因为程序“不应”依赖于实现定义的行为。

现在,我有两个问题:

  • Ch.4 p 中提到的“超出约束”是什么意思?2 是什么意思?这是否适用于当前情况?为什么?(我不擅长复杂的英语句子,因此指出其中的“约束”将不胜感激)。
  • 毕竟实现行为是未定义的吗?是/否,为什么?

c undefined-behavior language-lawyer

1
推荐指数
1
解决办法
88
查看次数

尼姆无限循环

嗨,我想在 nim 中进行无限循环。不是无限休眠的函数,它必须是一个循环。

试着写这个

while true:
  ;
Run Code Online (Sandbox Code Playgroud)

但是编译器说它需要一个表达式。当我将表达式放入循环体时,即

while true:
  0
Run Code Online (Sandbox Code Playgroud)

编译器说没有使用该表达式并拒绝编译我的程序。一个明显的技巧是将表达式转换为void,这种类型的表达式将被丢弃。

while true:
  cast[void](0)
Run Code Online (Sandbox Code Playgroud)

但是现在编译器期望void作为 void 转换的参数

loops nim-lang

0
推荐指数
1
解决办法
146
查看次数

标签 统计

c ×1

language-lawyer ×1

loops ×1

nim-lang ×1

undefined-behavior ×1