gpt4 book ai didi

c++ - 将 if-else 替换为 ? : in c++

转载 作者:太空狗 更新时间:2023-10-29 19:46:51 28 4
gpt4 key购买 nike

原代码为:

if (expression1) statement1;
else statement2;

有没有可能改成这样?

expression1 ? statement1 : statement2

还是取决于编译器?这似乎在 C++ 标准中有所不同?

有时情况是 if (expression1) statement1; 我该如何转换它?

顺便说一句,它可以在c中完成。

让源代码不可读正是我想要做的
这只是其中一个步骤

错误:条件运算符的第二个操作数是“void”类型,但第三个操作数既不是抛出表达式也不是“void”类型
这是我在编译时用 g++ (TDM-2 mingw32) 4.4.1 得到的

#include <stdio.h>

void _(int __, int ___, int ____, int _____)
{
((___ / __) <= _____) ? _(__,___+_____,____,_____) : !(___ % __) ? _(__,___+_____,___ % __, _____) :
((___ % __)==(___ / __) && !____) ? (printf("%d\n",(___ / __)),
_(__,___+_____,____,_____)) : ((___ % __) > _____ && (___ % __) < (___ / __)) ?
_(__,___+_____,____,_____ + !((___ / __) % (___ % __))) : (___ < __ * __) ?
_(__,___+_____,____,_____) : 0;
}

int main() {
_(100,0,0,1);
return 0;
}

如果我用 throw 0 替换最后的 0,它将编译成功。

最佳答案

表达式 1 ? statement1 : statement2 这实际上是不正确的。正确的是:

表达式 1 ?表达式 2 : 表达式 3

不是任何语句都可以等效地转换为单个表达式,因此一般来说并不总是可能的。例如:

if(expr)
{
for(int i = 0; i < 2; ++i) {std::cout << i; }
}
else
{
//something else
}

您不能将其转换为 ?: 表达式,因为 for 是语句,而不是表达式。

顺便说一句。它不能在标准 C 中完成。您所指的可能是 statement expression这是一个 GCC 扩展。

关于c++ - 将 if-else 替换为 ? : in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6573472/

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