这可能是一个愚蠢的问题,但我有一个代码与以下行:
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)
我会推荐这个:
Solver *S = UseDummySolver ? createDummySolver() : new STPSolver(true);
Solver *STP = S;
Run Code Online (Sandbox Code Playgroud)
它简洁,整洁,干净.
此外,它使用初始化,而不是赋值.您应该尽可能优先考虑初始化而不是分配.
你正在看链式作业.
它与:
Solver *S;
Solver *STP;
S = UseDummySolver ? createDummySolver() : new STPSolver(true);
STP = S;
Run Code Online (Sandbox Code Playgroud)