gpt4 book ai didi

c++ - C++ 编译器如何设法发出完全没有意义的代码?

转载 作者:行者123 更新时间:2023-11-28 03:24:46 26 4
gpt4 key购买 nike

<分区>

这里是代码 from this question 的略微修改版本:

#pragma warning(default:4716)
int recur(int i)
{
int result;
result = (i>1 ? i - recur(i/2) : 3);
// return intentionally omitted
}

int main()
{
return recur(0);
}

请注意,recur() 省略了 return,因此其行为未定义。以下是 Visual C++ 10 为这段代码发出的内容:

 316: int main()
317: {
00403940 push ecx
318: return recur(0);
00403941 mov eax,dword ptr [esp]
319: }
00403944 pop ecx
00403945 ret

是的,我知道在未定义行为的情况下,任何事情都是允许的。但是这段代码完全没有意义,编译器就是一个程序,所以我不希望从中得到毫无意义的东西。

编译器如何设法发出完全没有意义的代码?

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