C语言 三目运算小问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 06:12:18
(((f)<(168000))?(0xa0):(((f)<(450000))?(0x90):(0x30)))

平时没接触过 C 语言
今天要用一下
请教一下上面语句的意思

a?b:c
这是一个完整的语句
意思是若a为真则此式的值b,否则为c

你的语句的意思是:
(((f)<(168000))如果f小于168000则此式的值为(0xa0),反之f大于168000则此式的值为(((f)<(450000))?(0x90):(0x30)))
这又是另外一个式子这个式子的意思是如果f小于450000则此式的值为(0x90),反之为(0x30)

综上
f<168000 则此式的值为 (0xa0)
168000<f<450000 则此式的值为 (0x90)
f>450000 则此式的值为 (0x30)

ox代表十六进制数,与十进制的转换如: ox123=1*16^2+2*16^1+3*16^0=291;条件运算符(a>b)?a:b如果(a>b)条件为真,则表达式取值a,否则取值b.上式包含两个条件运算符,你可以先做后面括号内的那一层运算,再做外层的