奇怪的C++语法?

Cem*_*mre 7 c++ syntax

这可能是一个愚蠢的问题,但我有一个代码与以下行:

Solver *S, *STP = S = 
UseDummySolver ? createDummySolver() : new STPSolver(true);
Run Code Online (Sandbox Code Playgroud)

我知道三元运算符,但它是等同于我的等号.谁能给我一些解释?谢谢.

hou*_*oft 16

写出来,就是这样

Solver *S;
Solver *STP;
S = UseDummySolver ? createDummySolver() : new STPSolver(true);
STP = S;
Run Code Online (Sandbox Code Playgroud)

虽然这很丑陋,但我不建议你在代码中这样做.

建议的方法是按如下方式编写它(使用初始化,而不是赋值):

Solver *S = UseDummySolver ? createDummySolver() : new STPSolver(true);
Solver *STP = S;
Run Code Online (Sandbox Code Playgroud)

  • 为什么不使用初始化而不是赋值? (2认同)

Naw*_*waz 6

我会推荐这个:

Solver *S = UseDummySolver ? createDummySolver() : new STPSolver(true);
Solver *STP = S;
Run Code Online (Sandbox Code Playgroud)

它简洁,整洁,干净.

此外,它使用初始化,而不是赋值.您应该尽可能优先考虑初始化而不是分配.


Nom*_*Sim 5

你正在看链式作业.

它与:

Solver *S;
Solver *STP;
S = UseDummySolver ? createDummySolver() : new STPSolver(true);
STP = S;
Run Code Online (Sandbox Code Playgroud)