编译时和运行时的未定义行为

时间:2019-10-30 14:22:13

标签: c++ undefined-behavior

我仍然无法准确指出未定义行为的实际定义级别。假定以下代码:

int i = value;
unsigned int x = static_cast<unsigned int>(i);

这是有效的C ++代码,例如i1。但是在i = -1上,它变成未定义的行为,因此应用程序在运行时处于UB状态。

在编译期间,UB下面的代码示例已经显而易见。所以我的问题是,UB可以在编译时还是在运行时都正确吗?正确的术语是什么?

void foo(int* p)
{
    int v = *p;
    if (p == nullptr)
        return;
}

0 个答案:

没有答案