在此代码中执行第一个表达式后,k 的值如何变为 -5?
how to did the value of k become -5 after implementation of 1st expression in this code?
谁能帮我理解这段代码。我无法理解 k
在执行语句 k=(j>=5)?(i<5)?(i-j-i):(k-j):(i);
后如何变成 -5
int main () {
int i=8,j=5,k=0;
k=(j>=5)?(i<5)?(i-j-i):(k-j):(i);
i+=(k)?(i)?(k):(i):(k);
cout<<i<<k;
return 0;
}
输出:3 -5
将嵌套的三元表达式展开,并添加多余的括号可能更容易理解:
k = (j>=5) ?
( (i<5) ?
(i-j-i)
: (k-j)
)
: (i);
现在j >= 5
为真,表示i < 5
求值,为假,给出k - j
,即-5。
你可能永远不应该写这样的代码,如果除了读起来很烦之外没有其他原因的话。
谁能帮我理解这段代码。我无法理解 k
在执行语句 k=(j>=5)?(i<5)?(i-j-i):(k-j):(i);
-5
int main () {
int i=8,j=5,k=0;
k=(j>=5)?(i<5)?(i-j-i):(k-j):(i);
i+=(k)?(i)?(k):(i):(k);
cout<<i<<k;
return 0;
}
输出:3 -5
将嵌套的三元表达式展开,并添加多余的括号可能更容易理解:
k = (j>=5) ?
( (i<5) ?
(i-j-i)
: (k-j)
)
: (i);
现在j >= 5
为真,表示i < 5
求值,为假,给出k - j
,即-5。
你可能永远不应该写这样的代码,如果除了读起来很烦之外没有其他原因的话。