在 for 循环中充当条件 - 有人在 C 中这样写吗?
Function as condition in for loop - does anyone write like this in C?
在使用 C# 等高级语言多年后,我重新发现了 C,Java 我正在使用类似泛型的函数,我正在尝试编写类似仿函数等的东西。
我写了这样的东西:
#include <stdio.h>
static int test(int x){
return (x < 5) ? 1 : 0;
}
int main()
{
for (int i = 0; test(i); i++){
printf("i = %d\n", i);
}
return 0;
}
所以它有效。问题是:有人用C写过这样的吗?
观点免费版:专业的C程序员(操作系统、数据库、标准库源代码)会出现这样的写法吗?
这是否被认为是不好的做法、不流行或由于某些原因不是很有用?
上面的例子很愚蠢,但实际上我在搞乱 C 中的面向对象编程,我想在类似泛型的函数中使用类似这样的东西,并将 test(some_struct_t)
函数作为参数传递。
当然是在while循环条件下使用函数(不管是while
还是for
)
WidgetIterator wi = ...;
Widget w;
while ( WidgetIterator_next(wi, &w) ) {
process_widget(w);
}
但不是因为像您举的例子那样愚蠢的事情。 (x < 5) ? 1 : 0
是 x < 5
的一种奇怪的写法,并且只为 x < 5
使用一个函数只会使事情变得模糊。这不好。它与良好的编程习惯背道而驰。
在使用 C# 等高级语言多年后,我重新发现了 C,Java 我正在使用类似泛型的函数,我正在尝试编写类似仿函数等的东西。
我写了这样的东西:
#include <stdio.h>
static int test(int x){
return (x < 5) ? 1 : 0;
}
int main()
{
for (int i = 0; test(i); i++){
printf("i = %d\n", i);
}
return 0;
}
所以它有效。问题是:有人用C写过这样的吗?
观点免费版:专业的C程序员(操作系统、数据库、标准库源代码)会出现这样的写法吗?
这是否被认为是不好的做法、不流行或由于某些原因不是很有用?
上面的例子很愚蠢,但实际上我在搞乱 C 中的面向对象编程,我想在类似泛型的函数中使用类似这样的东西,并将 test(some_struct_t)
函数作为参数传递。
当然是在while循环条件下使用函数(不管是while
还是for
)
WidgetIterator wi = ...;
Widget w;
while ( WidgetIterator_next(wi, &w) ) {
process_widget(w);
}
但不是因为像您举的例子那样愚蠢的事情。 (x < 5) ? 1 : 0
是 x < 5
的一种奇怪的写法,并且只为 x < 5
使用一个函数只会使事情变得模糊。这不好。它与良好的编程习惯背道而驰。