这是将表达式赋值给变量的正确方法吗?
int a == ( i<3 );
我想使用像这样的for循环
for(i=0;a; i++)
答案 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)
你不能这样做,为什么你甚至想要?你能举个例子,这会有用吗?只是好奇,也许我们找到更好的解决方案:)
了解有关循环的更多信息