我可以用比较结果作为C++中的整数吗? 我可以直接使用比较作为C++中的整数吗?

我可以用比较结果作为C++中的整数吗? 我可以直接使用比较作为C++中的整数吗?,c++,types,casting,comparison,C++,Types,Casting,Comparison,例如,我可以这样做吗 int var = 0; for (i=0;i<20;i++){ var += (int)(var < 10); } 理论上,这将使var增加到10。 我知道它在Python中起作用。 < P>是的,C++从BoL向int 隐式铸造。 不过,我建议你更清楚地表明这是你的真实意图,以便未来的读者理解你的意图。首先显式地将其转换为int int var = 0; for (i = 0; i < 20; i++) { var += (int)(

例如,我可以这样做吗

int var = 0;
for (i=0;i<20;i++){
    var += (int)(var < 10);
}
理论上,这将使var增加到10。
我知道它在Python中起作用。

< P>是的,C++从BoL向int

隐式铸造。 不过,我建议你更清楚地表明这是你的真实意图,以便未来的读者理解你的意图。首先显式地将其转换为int

int var = 0;
for (i = 0; i < 20; i++) {
    var += (int)(var < 10);
}

对为什么不先试试再问呢?因为问比编译代码容易!为了使代码更具可读性,我建议使用var+=var<10@uzumaki如果你不愿意付出任何努力,为什么其他人要这样做?@RSahu代码会起作用,但他们不一定理解为什么。为什么不更明确一点并使用if语句呢?它可能会更慢。if语句是一个潜在的分支代码点。现代处理器可能会尝试分支预测。但是,简单地显式转换预期类型将产生与隐式转换相同的编译代码。当然,这是一个绝对最小的优化。如果你的读者能通过一些额外的If语句更好地理解你的代码,我总是选择可读性更强的代码。在这种情况下,If语句似乎更快,因为编译器可以知道在var大于10时放弃循环。在答案中所写的代码中,它总是执行20次迭代。