gpt4 book ai didi

c - "undefined behaviour"和 "implementation defined behaviour"之间有什么区别,或者为什么还要区分它们?

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:21 29 4
gpt4 key购买 nike

<分区>

C 标准 (AFAIK) 使用这两个术语。我很难理解两者之间的区别。

如果我有任何给定的、语法正确的 C 语句,编译器不可能不发出一些机器指令。当然,它可以选择根本不发布任何声明,但即使那样也将“取决于实现”。

一个更具体的例子:整数值溢出。现在我们有两种类型的溢出:算术溢出和内存溢出。如果根据标准,有符号整数的溢出是 UB,这意味着什么?一个实现是否可以简单地将一个溢出位溢出到 MSB 的相邻字节中? (从未见过,但可以吗?)

在我看来,“未定义的行为”总是 是依赖于实现的。或者,换句话说,编译器似乎无法在不引入“实现定义”行为的情况下处理任何“未定义行为”。

那么为什么还要区分两者呢?

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