gpt4 book ai didi

c++ - 在一行中压缩分配和错误检查有什么好处?

转载 作者:IT老高 更新时间:2023-10-28 21:55:05 25 4
gpt4 key购买 nike

这个问题的灵感来自 this question ,其中包含以下代码片段。

int s;
if((s = foo()) == ERROR)
print_error();

我发现这种风格难以阅读并且容易出错(正如最初的问题所展示的那样——它是由于作业周围缺少括号而提示的)。我会改为写以下内容,实际上它的字符更短。

int s = foo();
if(s == ERROR)
print_error();

不过,这不是我第一次看到这个成语,我猜它经常被使用是有原因的(也许是历史原因)。这些原因是什么?

最佳答案

我认为这是出于歇斯底里的原因,早期的编译器在优化方面并不那么聪明。通过将其作为单个表达式放在一行中,它给编译器一个提示,即可以测试从 foo() 获取的相同值,而不是专门从 s 加载值。

我更喜欢您的第二个示例的清晰性,稍后完成分配和测试。现代编译器可以轻松地将其优化到寄存器中,避免从内存存储中进行不必要的加载。

关于c++ - 在一行中压缩分配和错误检查有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891966/

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