为什么我不能通过开关检查功能的返回?

时间:2016-07-08 01:26:56

标签: c if-statement switch-statement return

使用if语句可以检查整数函数的返回。 该函数在此内执行。

if(!yourfunction)
{
     do something;
}
else
{
     do something else;
}

然而,开关中的相同内容甚至不会执行该功能。为什么呢?

switch(yourfunction())
{
      case 1:
            do something;
      case 0:
            something else;
}

1 个答案:

答案 0 :(得分:0)

可以这样做 - 但是你的函数应该返回一个int。

int foo(void) { return 1; }

int main(void)
{
    switch(foo()) {
    case 0:  
            printf("foo\n");
            break;
    case 1:  
            printf("bar\n");
            break;
    default:
            break;
    }   
    return 0;
}

可以看出,这可以编译并运行。

[09:36 PM] $ gcc -Wall -Werror switcht.c -o switcht
[09:36 PM] $ ./switcht 
bar
[09:36 PM] $

但是,如果你的函数返回除int之外的任何东西,那么它就不会编译。例如,如果foo()返回float

float foo(void) { return 1.0; }

然后:

[09:44 PM] $ gcc -Wall -Werror switcht.c 
switcht.c: In function ‘main’:
switcht.c:7:9: error: switch quantity not an integer
switch(foo()) {
     ^~~~~~
[09:44 PM] $