C中的表达式和for循环

时间:2018-05-20 16:48:22

标签: c loops

这是将表达式赋值给变量的正确方法吗?

int a == ( i<3 );

我想使用像这样的for循环

for(i=0;a; i++)

3 个答案:

答案 0 :(得分:4)

赋值运算符为=。因此,将表达式赋值给变量的正确方法是

int a = i < 3;

更准确地说,这会将表达式的赋给变量。它不会将表达式本身分配给变量。这意味着立即评估表达式。当你这样做

for(i=0;a; i++)

即使a确实如此,i的值也不会改变。

编写for循环的惯用方法是将内联布尔表达式写成:

for(i=0;i<3; i++)

如果您有一些更复杂的计算来确定循环何时结束,那么您可以编写一个函数进行计算。例如:

int condition(int i) {
    return i < 3;
}

现在您可以将for循环写为

for (i = 0; condition(i); i++)

答案 1 :(得分:1)

您可以使用以下宏

#include <stdio.h>
#define a(i) i < 3
int main(void) {
    for(int i =0; a(i); i++) {
        printf("%d\n",i);
    }
    return 0;
}
Output
0
1
2

修改

正如其他人所说,当条件很大时,宏不是一个好主意。在这种情况下,您可以为复杂逻辑创建单独的函数,并在for循环条件部分中使用它。如下:

int a(i) {
  return i < 3; // Your condition. It may be even more complex as per your requirement.
}

然后您可以通过以下方式在for循环中使用该函数:

for(int i =0; a(i); i++ ){...}

答案 2 :(得分:0)

你不能这样做,为什么你甚至想要?你能举个例子,这会有用吗?只是好奇,也许我们找到更好的解决方案:)

此外,您可以在http://en.cppreference.com/w/cpp/language/for

了解有关循环的更多信息