c++ - 编译时和运行时未定义的行为
问题描述
我仍然无法准确指出实际定义了哪个级别的未定义行为。假设以下代码:
int i = value;
unsigned int x = static_cast<unsigned int>(i);
这是有效的 C++ 代码并在例如i
is时定义1
。但是i = -1
它变成了未定义的行为,因此应用程序在运行时处于 UB 状态。
在下面的代码示例中,UB 在编译时已经很明显了。所以我的问题是,UB 可以在编译时或运行时是正确的吗?这里的正确术语是什么?
void foo(int* p)
{
int v = *p;
if (p == nullptr)
return;
}
解决方案
推荐阅读
- python - 如何从 for 循环的第二个索引开始
- arrays - JavaScript中数组内的对象var名称
- c# - .NET Core 异常:检测到类型服务的循环依赖项
- owl - 可以在 OWL 中连接传递和对称对象属性吗?
- r - 在变量的幂集中运行线性模型
- javascript - 编写一个可以与 then() 与 axios 输出链接的函数
- oauth - Google Oauth 登录不断重定向
- azure-active-directory - Microsoft Graph API 报告 B2B 用户已存在,但用户在 Azure 门户中不可见
- excel - 嵌套的 IF 语句,不能返回“0”,因为第二个 IF 语句在路上
- ruby-on-rails - Curl Call 从 Ruby on rails 不返回任何内容