gpt4 book ai didi

c - 在三元运算中设置 2 个值 - C

转载 作者:太空狗 更新时间:2023-10-29 16:00:59 24 4
gpt4 key购买 nike

我在使用 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”部分需要括号。

然而,这是对语言的滥用。最好坚持使用更具可读性的内容。

关于c - 在三元运算中设置 2 个值 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40094942/

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