Paj*_*ama 1 c conditional operators
嘿,非常感谢你的时间!我无法理解音频编码教科书中语句的语法.在一个示例中,存在如下的打印功能
printf("%d semitones up or %d semitones down\n", interval,
interval ? 12-interval : 0 );
Run Code Online (Sandbox Code Playgroud)
我不理解的部分是条件运算符,或"?".看起来我应该把它读作"如果间隔不等于0,间隔= 12 - 间隔",但这里的语法似乎很奇怪.我习惯于条件运算符是一个更加充实的语句,如:
a = b > c ? b : c;
Run Code Online (Sandbox Code Playgroud)
"如果b大于c,则a = b;否则a = c"
有人可以指出我的任何其他参考,或解释更多关于这种语法?我找不到类似的例子.
你几乎是对的,但没有任务.它说"如果interval非零,则12 - interval转到printf声明,否则通过0".
一般来说,三元运算符如下所示:
a ? b : c
Run Code Online (Sandbox Code Playgroud)
哪里a,b和c,都是表达.如果a求值为非零,则三元运算符将进行求值b,如果a求值为零,则三元运算符的结果是求值结果c.
您的第二个示例是三元运算符和赋值运算符的组合.三元运算符本身不执行任何分配.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |