语境:
这主要是对其他问题的跟进。OP 想猜测一个变量是否包含一个 int,我的第一个想法是在 C 中(如在 C++ 中)一个 int 变量只能包含一个 int 值。Eric Postpischil 提醒我,对于 int 类型,每个标准都允许陷阱表示......
当然,我知道大多数现代系统只使用整数的 2 补码表示,没有填充位,这意味着无法观察到陷阱表示。尽管如此,这两个标准似乎仍然允许有符号类型的 3 种表示形式:符号和幅度、一个补码和二进制补码。并且至少 C18 草案(n2310 6.2.6 类型表示)明确允许除 char 以外的整数类型的填充位。
问题
因此,在可能的填充位或非二进制补码符号表示的上下文中,int
变量可能包含符合实现的陷阱值。是否有可靠的方法来确保 int 变量包含有效值?