gpt4 book ai didi

c++ - if 子句中的条件赋值

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:43 25 4
gpt4 key购买 nike

我有一个代码,我不想重复太多,它看起来像这样:

myEnum setting;

if (((input == "Enum0") && ((setting = myEnum_0) == setting)) ||
((input == "Enum1") && ((setting = myEnum_1) == setting)) ||
((input == "Enum2") && ((setting = myEnum_2) == setting)))
{
doActionWith(setting);
}

这样我就不必检查输入是否完全不同(如果我只是赋值

if (input=="Enum0")
setting = myEnum_0;

代码不知道枚举是否真的设置了。

现在我想知道,最后的东西有没有更优雅的解决方案?

&& ((setting = myEnum_x) == setting) ?

最佳答案

除了 (setting = myEnum_0) == setting 在没有 sequence point 的情况下使用 setting 两次之外,你的代码很难理解。即使您修复了未定义的行为,例如 (setting = myEnum_0) == myEnum_0,您的代码对于任何维护它的人来说仍然是一个谜。

更好的方法是制作一个辅助函数,并在条件中使用它三次:

if (tryParse(input, "Enum0", setting, Enum0)
|| tryParse(input, "Enum1", setting, Enum1)
|| tryParse(input, "Enum2", setting, Enum2)) {
}

tryParse 定义为在成功时返回 true,否则返回 false

关于c++ - if 子句中的条件赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44410664/

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