我尝试了以下方法:
if(int i=6+4==10)
cout << "works!" << i;
if(int i=6+4,i==10)
cout << "doesn't even compile" << i;
第一个工作正常,而第二个无法编译。为什么是这样?
编辑:现在我知道第一个可能无法按我的意愿工作。i 在 if 范围内的值将是 1,而不是 10。(正如对此问题的评论之一所指出的那样)。
那么有没有办法在 if 语句中同时初始化和使用变量,类似于for(int i=0;i<10;i++)
?这样您就可以生成类似if((int i=6+4)==10)
(不会编译)的东西,其中 if 范围内的 I 值为 10?我知道你可以在 if 语句之前声明和初始化 I ,但是有没有办法在语句本身中做到这一点?
让您了解为什么我认为这会很有用。
if(int v1=someObject1.getValue(), int v2=someObject2.getValue(), v1!=v2)
{
//v1 and v2 are visible in this scope
//and can be used for further calculation without the need to call
//someObject1.getValue() und someObject2.getValue() again.
}
//if v1==v2 there is nothing to be done which is why v1 und v2
//only need to be visible in the scope of the if.