我遇到了一段代码:
for(i=((90.0E1,0x5A)<=(0x158,140.70E1)?(.28,3.45E2,0):(95.30E1,26.40E1)<=1.400E2?(1,this):(108.,0x227));i<length;i++) {
// some other code here
}
有人可以通过解释 for() 括号中的内容来帮助我吗?
我遇到了一段代码:
for(i=((90.0E1,0x5A)<=(0x158,140.70E1)?(.28,3.45E2,0):(95.30E1,26.40E1)<=1.400E2?(1,this):(108.,0x227));i<length;i++) {
// some other code here
}
有人可以通过解释 for() 括号中的内容来帮助我吗?
这是一个标准的三表达式for
语句,其中第一个表达式,初始化器,恰好被定义为
i = ((90.0E1,0x5A)<=(0x158,140.70E1)?(.28,3.45E2,0):(95.30E1,26.40E1)<=1.400E2?(1,this):(108.,0x227))
在这个表达式中,三元?:
运算符,更复杂的是,它以嵌套的方式执行此操作。
?:
运算符的语法如下
condition ? value if true : value if false
鉴于此,表达式由以下组成
condition: (90.0E1,0x5A)<=(0x158,140.70E1)
value if true: (.28,3.45E2,0)
value if false: (95.30E1,26.40E1)<=1.400E2?(1,this):(108.,0x227)
value-if-false 包含一个使用?:
运算符的嵌套表达式,当然可以以相同的方式解构。
简化十六进制和 E 数字,它变成:
for(i=((900,90)<=(344,1407)?(.28,345,0):(953,264)<=140?(1,this):(108.,551));i<length;i++)
((900,90)<=(344,1407)?(.28,345,0):(953,264)<=140?(1,this):(108.,551)) == 0;
这使得代码相当于:
for(i=0;i<length;i++)
这是一种非常有创意且令人困惑的for
循环方式,也是一个很好的笑话。