有没有一种方法可以在其他语句中使用条件语句,例如 printf
?
一种方法是使用三元运算符 ? :
例如:
printf("%d", a < b ? a : b);
是否有更复杂条件的方法?
有没有一种方法可以在其他语句中使用条件语句,例如 printf
?
一种方法是使用三元运算符 ? :
例如:
printf("%d", a < b ? a : b);
是否有更复杂条件的方法?
没有必要使用更复杂的表达式,条件运算符已经够糟糕了。没有此类语言特性。相反,写一个函数。
printf("%d", compare(a,b)); // good programming, readable code
printf("%d", a<b?(x<y?x:y):(x<y?y:x)); // bad programming, unreadable mess
switch
语句中每个分支的唯一任务是基于条件赋值的情况下,?:
操作符可以使代码更易读。但在大多数情况下,例如此示例中,它实际上会使代码变得更加难以阅读。因此,这是一个需要谨慎使用的运算符-始终考虑其他解决方案是否更易读。此外,与if
语句不同,?:
调用多个隐式类型提升,可能会导致意外问题。 - Lundin1
或0
。这些值是int
类型的。printf("%d",a>b);
,则将打印1
(true)或0
(false)。a<b?a:b
。如果条件为真,则将打印a
,否则将打印b
。你不能在printf
中放置语句,只能放置表达式。三元运算符形成一个表达式。表达式基本上是由运算符和操作数组成的树状结构,但是有一些奇怪的运算符是允许的,比如逗号运算符或赋值运算符'='。这使得表达式具有副作用。
printf
时,你必须确保格式说明符与参数类型匹配,但除此之外,在格式说明符后的printf
参数可以是任何表达式,包括三元条件运算符。 - M Oehm