免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3683 | 回复: 11
打印 上一主题 下一主题

这种main参数是怎么回事? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-16 22:58 |只看该作者 |倒序浏览
#include<stdio.h>
main(_){(_=getchar())^10&&main(0),putchar(_);}

在网上看到一个题目:输入一个字符串,逆序输出。这是其中一个答案。

main(_)怎么解释?从未见过,一直以为main只有 main(void), main(int argc, char *argv[]), main(int arvc, char *argv[], char **env)...

论坛徽章:
0
2 [报告]
发表于 2007-12-16 23:02 |只看该作者
编译器扩展~~~
_ 是int类型变量

论坛徽章:
0
3 [报告]
发表于 2007-12-18 14:00 |只看该作者
以前也没见过,折线长见识了

论坛徽章:
0
4 [报告]
发表于 2007-12-18 23:27 |只看该作者
第一次见

论坛徽章:
0
5 [报告]
发表于 2007-12-19 13:45 |只看该作者

  1. #include<stdio.h>
  2. main(int a)
  3. {
  4.         (a=getchar())^10&&main(0),putchar(a);
  5. }
复制代码

这样也行 _和a一样也是个符号吧

[ 本帖最后由 while(1) 于 2007-12-19 13:50 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-04-09 23:47 |只看该作者
还有一点,就是这个整形变量被初始化为0

论坛徽章:
0
7 [报告]
发表于 2008-04-09 23:54 |只看该作者
原帖由 wawxdyy 于 2008-4-9 23:47 发表
还有一点,就是这个整形变量被初始化为0


仿佛不是吧,它是表示是命令行参数的个数啊。

打雷关电脑了。

论坛徽章:
0
8 [报告]
发表于 2008-04-10 00:45 |只看该作者
写、看这种代码比练葵花宝典还痛苦

论坛徽章:
0
9 [报告]
发表于 2008-04-10 01:06 |只看该作者

  1. int main(int argc);
复制代码

这种格式也是合法的,只是很少见到,可能是一般情况都很少只用argc吧。

main()也是一个函数,'_'是一个合法变量名。而:


  1. _=getchar())^10;   // 这句是用'^'来判断输入的字符是否是'\n';
  2. main(0)                   // main函数递归,参数传的值根本没有关系
  3. putchar(a);            // 碰到'\n'之后打印stack上面的变量了;
复制代码


呵呵,这种代码当然只是写着玩玩,可读性太差,很明显作者故意写乱点,还省略了类型说明。

论坛徽章:
0
10 [报告]
发表于 2008-04-10 01:07 |只看该作者
原帖由 scutan 于 2008-4-9 23:54 发表


仿佛不是吧,它是表示是命令行参数的个数啊。

打雷关电脑了。


在这个程序里面,它表示啥已经完全没有关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP