不熟悉的基本C++代码

Eil*_*idh 0 c++

可能重复:
什么'?' 用C++做什么?

xo = ((temp.npieces%2)==1)? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这意味着什么.

xo是一个整数(我想简单地确定naught和cross之间的差异)

temp是一个位置的实例,它存储关于naughts和crosses board的信息(naughts和crosses的板上的位置,游戏的状态(即它是否已被赢,输或未决),以及到目前为止放在板上的碎片

npieces存储到目前为止放置的件数

%2显然是将npieces的剩余部分除以2,以确定这是奇数还是偶数,从而确定naughts或crosses是否接下来

最后? 1 : 2这件事让我感到困惑,有点,我确定我之前已经看过这个或类似的东西,但我担心我不确定这是做什么的.我知道这可能是非常基本的东西,但我在大学的第一年(我现在已经是我的第二年)病得很重,并且错过了奇怪的片段,所以我的随机性,经常是尴尬,我的知识缺口.

(这是代码的分配我的工作质量的一部分-试图让几百行代码的意义上,这包括由于这是一个任务,我乐意不被告知什么该行表示-实际上只是在解释资源的方向指出? 1 : 2,这样我就可以做出来为自己无论是在线资源,或在任何一本教科书可以在Safari联机丛书较大的章节都将是非常有益的,或者,当然,这里有一个非常简短的解释.)

谢谢.

我对非特定问题的标题表示道歉,不知道陌生代码的作用或称之为什么,我想不出更好的方式来表达它.

小智 7

xo = ((temp.npieces%2)==1)? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

如果temp.npieces是偶数(因此除数余数为0)xo现在等于2,则xo现在等于1;

编辑:它不检查它是否为奇数,它检查余数是否为正1.

X ? A : B 
Run Code Online (Sandbox Code Playgroud)

是另一种写作方式

if(X)
{
    A
}else
{
    B
}
Run Code Online (Sandbox Code Playgroud)

编辑2:

条件运算符的目的不是更快,更简单.条件运算符返回一个值.if才不是.这是主要的区别.Therefore x ? A : B isn't exactly the same as if( x ) { A; } else { B; }

Credit @ John Dibling


in C如果它不等于0,那么它就是真的.(即使它是-145)

  • @Muggen:三元运算符只是语法盐,并没有带来速度上的好处.关于SO的其他问题. (3认同)

Fem*_*ref 5

bool ? 1 : 2
Run Code Online (Sandbox Code Playgroud)

被称为三元运算符.如果bool为真,1则返回,否则2.