【纯C】模拟一下vb里的for each,python里的for语句
本帖最后由 tangptr@126.com 于 2017-10-8 21:59 编辑本人所读大学里,计算机课程讲的编程语言是Python,其中讲到了for循环的使用方式,大概要这么写:
for x in a:
print(x)
可以省略掉遍历数组时使用的索引变量,在VB里可以这么写:
For Each x In a
Print CStr(x)
Next
不过在C语言里好像没有这种骚操作了,毕竟是“无资源托管”的编程语言,必须要自己管理资源,想了想大概得这么写:
#include <stdio.h>
#include <stdlib.h>
void Main()
{
int a={3,6,7,9};
int i=0,b=0;
for(b=a;i<4;b=a[++i])printf("%d\t",b);
printf("\n");
system("pause");
}
好蛋疼,写for语句之前还得i=0一下,写for语句时还得限制索引!
但效果还可以吧。。。
最后注意一下,照抄代码的时候改链接器属性中入口函数的符号名为Main,或者改Main函数名为main,不然链接器会报错 watermelon 发表于 2020-9-12 23:26
所以我认为在py里面用for的时候请三思!在保证代码可读性的情况下,可以多多考虑列表(或字典、元组等) ...
写个for都要忌惮这么多东西,我选择放弃这门语言 其实可以利用一下宏和sizeof,实现一个countof,然后再用宏来实现自动遍历数组。
#define countof(x) (sizeof (x) / sizeof (x))
#define for_each(x) for(int i = 0; i < countof(x); i++)
然后祈祷你遇到的编译器支持for(int i = 0;这种写法吧。 我劝你不要把main搞成大写开头的Main,不然会有人照抄你的代码然后不知道调链接器属性,最后不能运行,就说我这网站坑人。 c语法不会有太大更新了,不过可以考虑一下c++11特性吧,或许对你有帮助
#include <iostream>
using namespace std;
int main() {
for(auto i : {1,2,3,4}){
cout << i << endl;
}
return 0;
}
结果:
Success #stdin #stdout 0s 15240KB
1
2
3
4
Success #stdin #stdout 0s 15224KB
收藏先,慢慢消化 顶tangptr大佬,Python这个脚本语言骚操作还是很多的。 py里面对与for...in x 还是挺慢的,因为in后面x必须是一个可迭代对象,所以,他需要调用iter(x),然后iter(x)的底层是x.__iter__( )方法,之后再转到C里面,如此看来,py在这方面比tangptr大佬和楼上A5大佬写的宏慢多了...... watermelon 发表于 2020-9-12 23:24
py里面对与for...in x 还是挺慢的,因为in后面x必须是一个可迭代对象,所以,他需要调用iter(x),然后iter( ...
所以我认为在py里面用for的时候请三思!在保证代码可读性的情况下,可以多多考虑列表(或字典、元组等)推导式和函数式编程,因为当你使用for的时候,就意味着你要为代码的速度做出一定的牺牲! 0xAA55 发表于 2020-9-13 12:50
写个for都要忌惮这么多东西,我选择放弃这门语言
好,干脆利索,很有精神!
然而小弟我还是离不开py(菜来着):Q
页:
[1]