-1

我想做这样的事情:

 if([FUNCTION] > 3){
         //do stuff
 }

whereFUNCTION是一个执行某些操作并以 int 形式返回结果的函数。例如,函数可以定义为:

 a + 1;
 return a;

wherea是先前定义的变量。有没有办法在C中做到这一点?非常感谢!

4

3 回答 3

3

首先

a + 1;

是一个没有效果的声明,所以我假设你的意思是a = a + 1. 那么是的,您当然可以从 if 语句中调用函数。

int foo(int* a) {
  *a = *a + 1;
  return *a;
}

// later ...

int a = 7;
if (foo(&a) > 3) {
  // do stuff
}

如果a在 if 语句的范围内不知道,您的意思可能是这样的:

int a = 7;

int foo() {
  a = a + 1;
  return a;
}

// later ...

if (foo() > 3) {
  // do stuff
}
于 2012-12-14T12:14:21.653 回答
2

由于从语法上讲,C 允许关系表达式if ( expression )左侧的函数调用with也是一个表达式,答案是肯定的,您可以直接执行此操作,>

if (some_function() > 3) {
    /* Do stuff. */
}

什么样的C书没有说明这一点?我强烈推荐 Kernighan,Ritchie,The C Programming Language,第 2 版(ANSI/ISO C89 更新)。

于 2012-12-14T12:16:53.307 回答
1
#include<stdio.h>
int a=5;
int foo(int a)
{
    a++;
    return a;
}

int main()
{

    if(foo(a) > 3) {
       printf("%d\n",a);
       // Do stuff
    }
    return 0;
}

这很简单。

编辑:这只是显示if条件返回的演示源代码true

于 2012-12-14T12:16:02.070 回答