三目运算符的使用

Timing_Length = (Timing_Length == 3) ? 0 : Timing_Length++;

在 C 语言(以及很多类似的编程语言中),三目运算符(? :)要求其第二和第三操作数(也就是?后面和:后面的表达式)是能返回一个确定值的常规表达式。
Timing_Length = (Timing_Length == 3)? 0 : Timing_Length++;这个语句里,Timing_Length++这种写法是后置自增操作,它有两个效果:一是返回当前Timing_Length的值用于整个三目运算符表达式的求值,二是在返回值之后对Timing_Length这个变量自身进行加 1 操作(也就是产生了副作用)。而三目运算符的语法规则不允许在其操作数中使用这种带有副作用且会改变变量值同时又用于返回值的复杂操作形式,所以从语法角度来说,这样写不符合语言规范,编译器在编译代码时会直接判定其为语法错误而无法通过编译。
posted @ 2024-12-24 12:44  iZJ"Qq4577105  阅读(46)  评论(0)    收藏  举报