出于效率原因(虽然非常小)我想在if条件块中声明并分配一个变量。
即。而不是说
if(a != 0 && a->b >= 10){
int c = a->b
...
}
我想在第一时间分配int c并说
if(a != 0 && (int c = a->b) >= 10){
...
}
以最简单的方式(对我而言),我得到了编译错误。有谁知道在c ++中是否/不可能这样做?
答案 0 :(得分:4)
if(a != 0) {
int c = a->b;
if (c >= 10) {
//using c here
}
// common cleanup here
}
答案 1 :(得分:1)
为什么你认为这会优化任何东西?
即使假设您被允许在条件内声明和初始化变量(这在C ++中是不可能的,因为编译器需要可以评估的东西并且声明不返回任何内容),这将在每次执行时完成条件被评估(除非你将它短路,这在你的代码片段中就是这种情况)但是无论如何都不会改变:你仍然在声明并初始化一个变量,无论在哪里。
答案 2 :(得分:0)
如果你在第一个条件下有它,它会工作。但是,在这种情况下,比较先于作业,你将得不到你想要的作品
int a = 3;
int x = 0;
if ( bool b = a > 5 && x < 2) {
printf("%d",b);
}
答案 3 :(得分:0)
int c = (a == 0 ? 0 : a->b);
if(a != 0 && c >= 10){
...
}
如果您想避免多次使用a->b
。