我在使用 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/