C++ 为什么使用初始值设定项的情况不正确? int*get{return nullptr;} int main { ifauto p=get;*p!=1233 { std::cout

C++ 为什么使用初始值设定项的情况不正确? int*get{return nullptr;} int main { ifauto p=get;*p!=1233 { std::cout,c++,if-statement,c++17,c++20,C++,If Statement,C++17,C++20,您正在if子句中取消对nullptr的引用,这是一种未定义的行为。编译器基本上可以对这段代码执行它想要的任何操作。您不能对执行*p时会发生什么做出任何假设。为什么您认为UB会导致true?true是定义的行为,UB是by定义未定义的行为。我再次忘记了这样一个事实,即无论发生什么…@Gabriel如果答案解决了您的问题,请将其标记为已接受。请在您的标记中包括[c++],以及具体的版本。Thx。

您正在if子句中取消对nullptr的引用,这是一种未定义的行为。编译器基本上可以对这段代码执行它想要的任何操作。您不能对执行*p时会发生什么做出任何假设。

为什么您认为UB会导致true?true是定义的行为,UB是by定义未定义的行为。我再次忘记了这样一个事实,即无论发生什么…@Gabriel如果答案解决了您的问题,请将其标记为已接受。请在您的标记中包括[c++],以及具体的版本。Thx。