鱼C论坛

 找回密码
 立即注册
查看: 4417|回复: 10

C语言问题

[复制链接]
发表于 2012-8-27 18:14:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 977945676 于 2012-8-27 18:16 编辑

程序1:
  1. #include < stdio.h> int i; void main(){printf("input: ");  while(getchar()!='\n'){i++;} printf("你输入了%d个字符\n",i); }
复制代码
程序2:
  1. #include < stdio.h> void main(){int i; printf("input: ");  while(getchar()!='\n'){i++;} printf("你输入了%d个字符\n",i); }
复制代码


问题:为什么程序2会运行出错而程序1正常呢?(编译都通过!)
编译环境:Microsoft Visual Studio 2012 『win7 SP1 X86』
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 18:26:32 | 显示全部楼层
  1. #include < stdio.h>

  2. void main()
  3. {
  4.         int i=0;        //如果i 在第一次使用的时候不是直接赋值的话 最好初始化
  5.         char c;
  6.         printf("input: ");  
  7.         while((c=getchar())!='\n')                //getchar()函数需要一个字符变量来接收返回值
  8.         {
  9.                 i++;
  10.         }
  11.         printf("你输入了%d个字符\n",i);
  12. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 19:01:44 | 显示全部楼层
很简单,程序1定义的变量1的作用域是整个程序,但是所以在WHILE循环中可以被访问,而程序2定义的变量I只在MAIN主函数里面有效,所以在主函数外等于没有定义,你在程序二里面的WHILE{}里面添加INT声明就不会报错了。


                               
登录/注册后可看大图
来自 黄毛童子鸡 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 19:01:44 | 显示全部楼层
另外,您是汕头做编程开发的么?我是学计算机专业的,汕头有没有编程类的工作机会可以介绍呢……我JAVA,C,C++,C#都会。


                               
登录/注册后可看大图
来自 黄毛童子鸡 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 19:01:44 | 显示全部楼层
回复@黄毛童子鸡:嗯,我试试,3Q


                               
登录/注册后可看大图
来自 F-小钦 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 19:01:44 | 显示全部楼层
回复@黄毛童子鸡:我还是学生。。。


                               
登录/注册后可看大图
来自 F-小钦 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 20:03:05 | 显示全部楼层
回复@F-小钦:呃,郁闷。。。你是学计算机专业么?如果你学编程的话,我建议你学C++和JAVA。


                               
登录/注册后可看大图
来自 黄毛童子鸡 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 21:19:25 | 显示全部楼层
回复@黄毛童子鸡:我才高一[汗]


                               
登录/注册后可看大图
来自 F-小钦 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 21:37:55 | 显示全部楼层
朋友你这个程序1里,i是全局变量,你不初始化,i默认等于零,程序2里,i是局部变量,你不初始化,其值是不确定的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-27 22:33:24 | 显示全部楼层
明显看不懂
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-28 10:43:50 | 显示全部楼层
回复@F-小钦:好吧,小朋友,你很有报复,加油吧


                               
登录/注册后可看大图
来自 黄毛童子鸡 的新浪微博
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-22 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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