C-如果在其他条件下可用的情况下的变量声明?

问题描述 投票:0回答:3

如果我在C的if条件中声明变量,那么该变量也可以用于else分支吗?例如:

if((int x = 0)){
  foo();
} else{
  x++;
  bar(x);
}

找不到答案,至少找不到我的措辞方式。请帮助。

c if-statement variables declaration
3个回答
2
投票

您无法在C中的if条件中声明变量...

Declare variable in if statement (ANSI C)

例如,如果在if范围内声明,则:

if(something){
  int x = 0;
} else{
  x++; // will cause a compilation error
  bar(x);
}

未定义'else'中的x,因为在C中,局部变量只能由声明它们的代码块中包含的语句使用。


0
投票

实验结果:无法在if条件下声明变量。不会编译。


0
投票

您不能这样声明变量

 if((int a = 0))

编译器不允许运行代码,并且出现错误

并且如果您尝试此操作

if(something_that_is_false){
        int a = 12;
    }
    else{
        do_something;
    }

再次出错,因为它们处于同一级别,并且无法访问其局部变量。

警告:您可以使用此代码,并且可以正常运行

int a;
    if(a=0){
         printf("True");
    }
    else{
        printf("False");
    }

并且您会在屏幕上看到'False',因为这就像书写

if(0) // and its false!

最后一个

int a;
    if(a=0){
         printf("True");
    }
    else{
        printf("False");
    }

您会在屏幕上看到“ True”,因为这就像书写

if(5)//除零以外的任何数字为真!

© www.soinside.com 2019 - 2024. All rights reserved.