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

在三元运算中设置2个值 – C.

发布时间:2020-12-16 10:04:16 所属栏目:百科 来源:网络整理
导读:我在使用C中的三元运算符设置两个整数时遇到问题.由于大多数问题与多个三元条件有关,我似乎无法找到答案. 然而,我想检查一个条件并相应地设置2个值. 即: if ( i == 5 ) { x = foo; y = foo + 1;} else { x = bar; y = bar + 1;} 到目前为止,我尝试了以下,但
我在使用C中的三元运算符设置两个整数时遇到问题.由于大多数问题与多个三元条件有关,我似乎无法找到答案.

然而,我想检查一个条件并相应地设置2个值.

即:

if ( i == 5 ) {
    x = foo;
    y = foo + 1;
} else {
    x = bar;
    y = bar + 1;
}

到目前为止,我尝试了以下,但它似乎没有工作.

x,y = ( i == 5 ) ? foo,foo + 1 : bar,bar + 1;

在检查1个条件后,是否可以在三元组中设置两个值?

谢谢,

解决方法

这是不可能的.与支持分配数字列表的python或perl不同,C不支持此语法.

您需要两个单独的三元操作才能执行此操作:

x = (i == 5) ? foo : bar;
y = (i == 5) ? foo + 1 : bar + 1;

在您只希望条件运行一次的情况下(例如,它是函数调用或其他一些昂贵的操作):

int result = (i == 5);
x = result ? foo : bar;
y = result ? foo + 1 : bar + 1;

编辑:

如果你想使用有点难看的东西,这将有效:

x = (i == 5) ? (y = foo + 1,foo) : (y = bar + 1,bar);

通过使用逗号运算符,运算符的左侧(在这种情况下,对y的赋值)被丢弃并被丢弃,而右侧变为随后被赋值给x的表达式的值.

请注意,“if”部分并不严格需要括号,但“else”部分需要它们.

然而,这是滥用语言.最好坚持使用更具可读性的东西.

(编辑:李大同)

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

    推荐文章
      热点阅读