gpt4 book ai didi

c - 什么是不确定值?

转载 作者:太空狗 更新时间:2023-10-29 16:40:42 25 4
gpt4 key购买 nike

我在c99标准中找到了这个

3.17.2
1 indeterminate value
either an unspecified value or a trap representation

上面的说法我不是很清楚。任何人都可以解释这是什么以及它的优缺点是什么?

一些示例将受到高度赞赏。

最佳答案

两者(不确定值和陷阱表示)的区别是基本的。在一种情况下,您没有已知的值(value)。在另一个中,您有一个已知的无效值。

我可以收集的不确定值的最简单示例:

int a;
int b = a;

没有与a 关联的确定“值”的概念。它有一些东西(因为它正在占用内存)但是它没有定义“什么”,因此是不确定的。总的来说,这个概念听起来很简单:除非已经决定某物是什么,否则它不能用于任何具有确定性结果的评估(如果有帮助,请考虑 r 值)。

实际值取决于语言、编译器和内存管理策略。例如,在 C 的大多数实现中,未初始化的范围变量或调用 malloc 返回的指针指向的内存将包含之前恰好存储在该地址的任何值。另一方面,大多数脚本语言会将变量初始化为某个默认值(0、""等)。

关于陷阱表示,它本质上是在与基础正式定义相关的允许值的限制域之外的任何值。下面是一个希望不会混淆的示例。 :

enum FooBar { foo=0, bar=1 };
enum FooBar fb = (enum FooBar)2;

一般来说,它是落在底层存储表示允许的空间内的任何位模式(在可能是 int 的枚举中)但不被视为受限域的有效“值”其正式定义。关于陷阱表示及其根源的杰出描述可以在this answer找到。 .以上只是一个非常简单的已知无效表示可能出现的代表。实际上,它在硬件中用于检测触发无效状态的值。我认为它们是“ panic ”值(value)观。同样,上述代码只是理想化地展示了“值”的概念,这不是“有效”的,但实际上是已知的。

关于c - 什么是不确定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com