菜鸟求助,大虾们帮帮忙!
#include<stdio.h>int main(void)
{
int first,last;
printf("%d %d\n",first,last);
return 0;
}
int first=10,last=20;
编译输出结果 0 206 怎么会是这个结果,有哪位大虾能给分析下,谢谢!
建议LZ把int first=10,last=20;这条语句放到 int first,last;下面看看。
#include<stdio.h>
int main(void)
{
int first,last;
first=10,last=20;
printf("%d %d\n",first,last);
return 0;
}
不知道行不行? #include<stdio.h>
int main(void)
{
int first,last;
first=10;last=20;
printf("%d %d\n",first,last);
return 0;
} 是啊,就算是想要定义全局变量也应该用不着这样吧
回复 1# fifa_king 的帖子
质疑:主函数中还用加: void吗? return也用不到吧!#include"stdio.h"
main()
{
int first=10,last=20;
printf("%d%d\n",first,last);
getch();
}
参考:
带参数的主函数的定义
main函数只能有两个形参,并且这两个形参的类型也是固定的。第一个形参必须是整型变量,第二个形参可以定义为字符型指针数组,也可以定义为二级字符指针变量,因此也可以写成main(int argc, char **argv)
带参数的主函数调用
要调用带参数的主函数必须在操作系统环境下进行。假设C语言源程序文件file1.c,经过编译、连接生成一个可执行文件file1.exe。在DOS系统提示符后键入可执行文件名file1,即可执行该程序。
带参数的主函数调用形式:
可执行文件名参数1 参数2 …… 参数n
在DOS系统提示符下键入的这一行字符称为命令行。可执行文件名称为命令名,其后的参数称为命令行参数,命令名与各参数之间用空格进行分隔。
argc 称作参数计数器,它的值是包括命令名在内的参数个数。
argv 指针数组的作用是存放命令行中命令名和每个参数字符串的首地址。
注意: 命令行参数所传送的数据全部都是字符串。即便传送的是数值,也是按字符串方式传送给主函数。程序中使用这些参数时,还需要将数字字符串转换成数值型数据。C语言标准库函数提供了一些相关的数据类型转换函数。 [quote][bo][un]fifa_king[/un] 在 2008-7-23 10:20 的发言:[/bo]
#include
int main(void)
{
int first,last;
printf("%d %d\n",first,last);
return 0;
}
int first=10,last=20;
编译输出结果 0 206 怎么会是这个结果,有哪位大虾能给分析下,谢谢! [/quote]
楼主要是定义全局变量应该把定义放在被调用变量的前面 晕 这样格式不对啊~~~
回复 1# fifa_king 的帖子
晕,函数都结束了,最后一句还有用啊? 5楼的是大牛,大神,请受Vx一拜:Orz 其实原程序是这样的:#include<stdio.h>
int main(void)
{
extern int first,last;
printf("%d %d\n",first,last);
return 0;
}
int first=10,last=20;
这是个试例程序,目的就是告诉存储类型说明符extern的用法,我把extern去掉了,想试试看能编译通过吗,一试通过了,只是结果我不知道是怎么出来的,所以想问问看这个结果是怎么得来的。谢谢各位的热心帮助! 另外发现这个程序用F7单步执行和直接Ctrl+F9运行的结果还不一样,前者结果是-28981 657,后者结果是0 206.使用TC3.0运行的
回复 11# fifa_king 的帖子
编译输出结果 0 206 应该只是碰巧~first,last变量的地址是系统随机分配的,这个地址所包含的值在你没有初始化之前是未知的,要不你重启一下你的机器,再运行一下的程序,应该就不是这两个数了~
还有~我也是新手哈~哪里错了,请高手指教~呵呵
页:
[1]
