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

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


但是,switch中的同一件事甚至不会执行该功能。为什么?

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

最佳答案

可以做到-但是您的函数应该返回一个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] $

10-08 15:58