在c中用if:替换if-else
发布时间:2020-12-16 10:19:34 所属栏目:百科 来源:网络整理
导读:原始代码是: if (expression1) statement1; else statement2; 有可能把它变成这个吗? expression1 ? statement1 : statement2 还是取决于编译器?这似乎在c标准中有所不同? 有时情况是if(expression1)statement1;我怎么能改变它? 顺便说一句,它可以在c中
原始代码是:
if (expression1) statement1; else statement2; 有可能把它变成这个吗? expression1 ? statement1 : statement2 还是取决于编译器?这似乎在c标准中有所不同? 有时情况是if(expression1)statement1;我怎么能改变它? 顺便说一句,它可以在c中完成. 使源代码不可读正是我想要做的 错误:条件运算符的第二个操作数是’void’类型,但第三个操作数既不是throw-expression也不是’void’类型 #include <stdio.h> void _(int __,int ___,int ____,int _____) { ((___ / __) <= _____) ? _(__,___+_____,____,_____) : !(___ % __) ? _(__,___ % __,_____) : ((___ % __)==(___ / __) && !____) ? (printf("%dn",(___ / __)),_(__,_____)) : ((___ % __) > _____ && (___ % __) < (___ / __)) ? _(__,_____ + !((___ / __) % (___ % __))) : (___ < __ * __) ? _(__,_____) : 0; } int main() { _(100,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 } 你不能将它转换成?:expression,因为for是一个语句,而不是一个表达式. 顺便说一句.它不能在标准C中完成.你所指的可能是statement expression这是一个GCC扩展 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |