[PIC®/AVR®/dsPIC®产品] C语言的三目运算符

[复制链接]
4479|30
 楼主| yiy 发表于 2024-4-17 23:07 | 显示全部楼层 |阅读模式
C语言中的三目运算符是一种条件表达式,通常用于在一个表达式中根据条件选择不同的值。它的一般形式是:
condition ? expression1 : expression2

解释如下:

condition 是一个条件表达式,它可以是任何能够产生布尔值(true或false)的表达式。
如果condition的结果为真(true),则整个表达式的值为expression1的值。
如果condition的结果为假(false),则整个表达式的值为expression2的值。
三目运算符的主要优点是它的简洁性和灵活性,使得可以在单行代码中进行条件判断。例如:

  1. int a = 10;
  2. int b = 20;
  3. int max = (a > b) ? a : b;
在这个例子中,如果a大于b,则max的值将为a,否则为b
 楼主| yiy 发表于 2024-4-17 23:08 | 显示全部楼层
除了基本的条件选择外,三目运算符还可以在一些情况下用于更复杂的逻辑。以下是一些高级用法示例:

嵌套使用:可以在三目运算符内部嵌套其他三目运算符,从而实现更复杂的条件逻辑。
  1. int a = 10;
  2. int b = 20;
  3. int max = (a > b) ? a : ((b > 30) ? b : 30);

在这个例子中,如果a大于b,则max的值将为a;否则,如果b大于30,则max的值为b,否则为30。
 楼主| yiy 发表于 2024-4-17 23:08 | 显示全部楼层
返回值的选择:可以使用三目运算符来选择不同的返回值。
  1. int absolute(int x) {
  2.     return (x >= 0) ? x : -x;
  3. }
 楼主| yiy 发表于 2024-4-17 23:09 | 显示全部楼层
这个函数返回x的绝对值。如果x是非负数,则返回x本身,否则返回x的相反数。
 楼主| yiy 发表于 2024-4-17 23:09 | 显示全部楼层
简化赋值表达式:可以使用三目运算符简化某些赋值表达式的编写。
  1. int x = (condition) ? value1 : value2;

这个简单的语句根据条件选择value1或value2并将其赋值给x。
dongnanxibei 发表于 2024-4-25 22:49 | 显示全部楼层
只有二选一的,还是很推荐用这个的。
xuanhuanzi 发表于 2024-4-26 14:57 | 显示全部楼层
简单的二选一是比较适合的,复杂的就要推荐用if else 了,这样看着更清晰明了。
幸福小强 发表于 2024-4-29 23:05 | 显示全部楼层
三目可以代替if  else

评论

三目运算符 代码优雅 ,可惜占的空间略大, if 的优化比较好点  发表于 2024-5-7 17:13
jimmhu 发表于 2024-5-3 16:45 | 显示全部楼层
三目运算符的一般形式是 condition ? expression1 : expression2,其中condition是一个布尔表达式,expression1和expression2是根据condition的结果来选择执行的表达式。如果condition为真,则执行expression1并返回其结果;如果为假,则执行expression2并返回其结果。
maqianqu 发表于 2024-5-3 17:34 | 显示全部楼层
在三目运算符中,如果两个选择值的类型不同,编译器会进行类型转换以使它们兼容。这可能导致意外的结果。为了避免这种情况,请确保选择值的类型相同,或者在表达式中进行显式类型转换。
uiint 发表于 2024-5-4 11:37 | 显示全部楼层
三目运算符?:必须包含三个操作数:条件表达式、第一个操作数和第二个操作数。如果缺少任何一个,就会导致编译错误。
hudi008 发表于 2024-5-4 13:05 | 显示全部楼层
将空指针或布尔值用于三目运算符时,需要确保类型匹配和逻辑正确。例如,不要将NULL与布尔值直接比较或使用。
macpherson 发表于 2024-5-4 13:56 | 显示全部楼层
三目运算符的优先级在C语言的运算符优先级表中相对较低,这意味着它在大多数情况下是最后计算的。
mattlincoln 发表于 2024-5-4 14:57 | 显示全部楼层
在运算符优先级中,三目运算符排在第13位。在使用三目运算符时,需要注意与其他运算符的优先级关系,以避免因优先级问题导致的逻辑错误。
robincotton 发表于 2024-5-4 15:56 | 显示全部楼层
三目运算符可以使代码更加简洁,但过度使用或嵌套过深可能会降低代码的可读性。
plsbackup 发表于 2024-5-4 17:22 | 显示全部楼层
由于三目运算符的两个表达式都会求值,如果表达式中包含有副作用的操作(如递增、递减操作),可能会产生意料之外的结果。
belindagraham 发表于 2024-5-4 22:06 | 显示全部楼层
三目运算符的优先级高于赋值运算符,但低于算术运算符、关系运算符和逻辑运算符。因此,在使用三目运算符时,需要注意其与其他运算符的结合性。
i1mcu 发表于 2024-5-5 08:42 | 显示全部楼层
三目运算符的选择值可以是带有副作用的表达式,如赋值、自增和自减操作。在这种情况下,请确保了解副作用的发生和执行顺序,以避免意外的结果。
febgxu 发表于 2024-5-6 08:51 | 显示全部楼层
在使用三目运算符时,需要注意结果的类型一致性。
sdlls 发表于 2024-5-6 11:58 | 显示全部楼层
三目运算符可以嵌套使用以创建更复杂的表达式,但这可能会导致可读性下降。当嵌套层次加深时,代码的可读性和可维护性都会受到影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

yiy

114

主题

1954

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部