while部分让我困惑,当它说j ++是j = 2还是3?
#include <stdio.h>
int main() {
int i=2,j=2;
while(i+1?--i:j++)
printf("%d",i);
return 0;
}
答案 0 :(得分:3)
NextSpawn
表达式Model.AlarmItems
首先检查while
是否为非零。如果是,则评估i+1?--i:j++
,将其用作i+1
测试。如果没有,则评估--i
,将其用作while
测试。
最初j++
为2,因此while
为3,非零。因此它评估i
,即1,i+1
现在为1.然后执行正文,打印1。
第二次,--i
为1,因此i
为2,非零。所以它再次评估i
,即0,i+1
现在为0.然后退出循环,因为--i
表达式的值为0。
答案 1 :(得分:0)
如果你打破了三元表达式,这是非常令人困惑的,但更容易理解。
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
jcr:primaryType="sling:OsgiConfig"
mime.types="[video/x-matroska mkv, video/dvd vob, mymime/type extension]"
/>
x的值将决定while是否继续。
那么x的值就是这样:
x = i+1?--i:j++;
此时(x)将突破循环,因为x = 0 = false。 printf只调用一次,其中x的值为1