加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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’类型
这是我在编译时用g(TDM-2 mingw32)4.4.1得到的

#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扩展

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读