技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 495|回复: 5
收起左侧

【纯C】模拟一下vb里的for each,python里的for语句

[复制链接]

28

主题

79

帖子

2525

积分

用户组: 管理员

UID
1043
精华
12
威望
72 点
宅币
2071 个
贡献
171 次
宅之契约
0 份
在线时间
357 小时
注册时间
2015-8-15
发表于 2017-10-9 07:47:30 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
本帖最后由 tangptr@126.com 于 2017-10-8 21:59 编辑

本人所读大学里,计算机课程讲的编程语言是Python,其中讲到了for循环的使用方式,大概要这么写:
[Python] 纯文本查看 复制代码
for x in a:
	print(x)

可以省略掉遍历数组时使用的索引变量,在VB里可以这么写:
[Visual Basic] 纯文本查看 复制代码
For Each x In a
	Print CStr(x)
Next

不过在C语言里好像没有这种骚操作了,毕竟是“无资源托管”的编程语言,必须要自己管理资源,想了想大概得这么写:
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>

void Main()
{
	int a[4]={3,6,7,9};
	int i=0,b=0;
	for(b=a[0];i<4;b=a[++i])printf("%d\t",b);
	printf("\n");
	system("pause");
}

好蛋疼,写for语句之前还得i=0一下,写for语句时还得限制索引!
但效果还可以吧。。。
Capture.JPG
最后注意一下,照抄代码的时候改链接器属性中入口函数的符号名为Main,或者改Main函数名为main,不然链接器会报错
flowers for Broken spirits - a woman turned into stake will hold the world in the basin of fire.

1024

主题

2270

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
201
威望
271 点
宅币
17416 个
贡献
34862 次
宅之契约
0 份
在线时间
1655 小时
注册时间
2014-1-26
发表于 2017-10-9 09:29:05 | 显示全部楼层
我劝你不要把main搞成大写开头的Main,不然会有人照抄你的代码然后不知道调链接器属性,最后不能运行,就说我这网站坑人。

271

主题

445

帖子

4770

积分

用户组: 真·技术宅

UID
2
精华
61
威望
148 点
宅币
3593 个
贡献
131 次
宅之契约
0 份
在线时间
615 小时
注册时间
2014-1-25
发表于 2017-10-9 17:55:59 | 显示全部楼层
c语法不会有太大更新了,不过可以考虑一下c++11特性吧,或许对你有帮助

[C++] 纯文本查看 复制代码
#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

1

主题

85

帖子

91

积分

用户组: 小·技术宅

UID
3026
精华
0
威望
1 点
宅币
3 个
贡献
0 次
宅之契约
0 份
在线时间
6 小时
注册时间
2017-10-31
发表于 2017-11-8 08:39:06 | 显示全部楼层
收藏先,慢慢消化

15

主题

151

帖子

1066

积分

用户组: 上·技术宅

UID
3808
精华
2
威望
18 点
宅币
819 个
贡献
50 次
宅之契约
0 份
在线时间
157 小时
注册时间
2018-5-6
发表于 2018-12-16 01:15:23 | 显示全部楼层
顶tangptr大佬,Python这个脚本语言骚操作还是很多的。
菜鸟一枚,直接指正,不必留情

1024

主题

2270

帖子

5万

积分

用户组: 管理员

一只技术宅

UID
1
精华
201
威望
271 点
宅币
17416 个
贡献
34862 次
宅之契约
0 份
在线时间
1655 小时
注册时间
2014-1-26
发表于 2018-12-17 00:11:28 | 显示全部楼层
其实可以利用一下宏和sizeof,实现一个countof,然后再用宏来实现自动遍历数组。

#define countof(x) (sizeof (x) / sizeof (x)[0])
#define for_each(x) for(int i = 0; i < countof(x); i++)

然后祈祷你遇到的编译器支持for(int i = 0;这种写法吧。

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-3-20 03:09 , Processed in 0.106709 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表