读书人

c的小疑点

发布时间: 2012-03-12 12:45:33 作者: rapoo

c的小问题
下面是我的代码 (本来写的是其他程序,有点长就把问题给提了出来)
#include <stdio.h>

int main(int argc, char *argv[])
{
int i;

if ((*++argv)[0] == '*')
i = 3 * 5;
printf (" %d\n", i);

return 0;
}
输出的结果:
[root@localhost 5]# ./a.out *
4972912
[root@localhost 5]# ./a.out "*"
15

用其他符号都没有这问题
我想问为什么乘号一定要加上引号才可以
linux命令行中的乘号是什么,有什么特殊意义吗?


[解决办法]
没用过Linux。。
[解决办法]
字符比较。。。
[解决办法]
你这个时候输入的*不是字符,而是正则表达式中的*,在这里相当于是当前目录下任意文件路径,你可以用print来输出你的参数,可以看出来是啥玩意儿。反正不会是"*"所以条件不能执行!
[解决办法]
因为*被shell扩展成一堆文件名了...

读书人网 >C语言

热点推荐