[PIC®/AVR®/dsPIC®产品]

C语言的三目运算符

[复制链接]
1294|28
手机看帖
扫描二维码
随时随地手机跟帖
yiy|  楼主 | 2024-4-17 23:07 | 显示全部楼层 |阅读模式
C语言中的三目运算符是一种条件表达式,通常用于在一个表达式中根据条件选择不同的值。它的一般形式是:
condition ? expression1 : expression2

解释如下:

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

int a = 10;
int b = 20;
int max = (a > b) ? a : b;
在这个例子中,如果a大于b,则max的值将为a,否则为b

使用特权

评论回复
yiy|  楼主 | 2024-4-17 23:08 | 显示全部楼层
除了基本的条件选择外,三目运算符还可以在一些情况下用于更复杂的逻辑。以下是一些高级用法示例:

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

在这个例子中,如果a大于b,则max的值将为a;否则,如果b大于30,则max的值为b,否则为30。

使用特权

评论回复
yiy|  楼主 | 2024-4-17 23:08 | 显示全部楼层
返回值的选择:可以使用三目运算符来选择不同的返回值。
int absolute(int x) {
    return (x >= 0) ? x : -x;
}

使用特权

评论回复
yiy|  楼主 | 2024-4-17 23:09 | 显示全部楼层
这个函数返回x的绝对值。如果x是非负数,则返回x本身,否则返回x的相反数。

使用特权

评论回复
yiy|  楼主 | 2024-4-17 23:09 | 显示全部楼层
简化赋值表达式:可以使用三目运算符简化某些赋值表达式的编写。
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

使用特权

评论回复
评论
wangchangwenqq 2024-5-7 17:13 回复TA
三目运算符 代码优雅 ,可惜占的空间略大, if 的优化比较好点 
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

93

主题

1714

帖子

4

粉丝