免费注册 查看新帖 |

Chinaunix

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

[C] 这个c代码在我的老爷机上运行不正常,换我的笔记本运行后就正常了。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-03 07:50 |只看该作者 |倒序浏览
一个很怪异的问题,这是我照着书上敲的代码
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.         int num[2][3];
  6.         int i, j;

  7.         for (i = 0; i < 2; i++)
  8.         {
  9.                 for (j = 0; j < 3; j++)
  10.                 {
  11.                         printf("please enter num[%d][%d]: ", i, j);
  12.                         scanf("%d", &num[i][j]);
  13.                 }
  14.         }

  15.         printf("this array is:\n");
  16.         for (i = 0; i < 2; i++)
  17.         {
  18.                 for (j = 0; j < 3; j++)
  19.                 {
  20.                         printf("num[%d][%d] = %d\n", i, j, num[i][j]);
  21.                 }
  22.         }

  23.         system("PAUSE");
  24.         return 0;
  25. }
复制代码
下面这是正确的运行结果
  1. please enter num[0][0]: 1
  2. please enter num[0][1]: 2
  3. please enter num[0][2]: 3
  4. please enter num[1][0]: 4
  5. please enter num[1][1]: 5
  6. please enter num[1][2]: 6
  7. this array is:
  8. num[0][0] = 1
  9. num[0][1] = 2
  10. num[0][2] = 3
  11. num[1][0] = 4
  12. num[1][1] = 5
  13. num[1][2] = 6
  14. 请按任意键继续. . .
复制代码
这个c代码在我的老爷机上运行不正常,换我的笔记本运行后就正常了。
上面这代码在我的老爷机上运行时,最后循环输出数组的值时,i的值一直是2,而且数组的值也完全不是输入的值,而是好几位的数字。
难道是我的古董老爷机内存还是哪里出问题了 ,平时用用还是没啥问题的。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2014-09-03 08:39 |只看该作者
分别是什么编译器?什么操作系统?

论坛徽章:
0
3 [报告]
发表于 2014-09-03 08:50 |只看该作者
我回去再核对下,不会是代码敲错了吧

论坛徽章:
0
4 [报告]
发表于 2014-09-03 18:56 |只看该作者
谢谢,楼上的,回来看了一下,确实是我代码写错了,第一个for循环后写了个分号
  1.         for(i = 0; i < 2; i++); 
  2.         {
  3.                 printf("i = %d\n", i);
  4.                 for(j = 0; j < 3; j++)
  5.                 {
  6.                         printf("num[%d][%d] = %d\n", i, j, num[i][j]);
  7.                 }
  8.         }
复制代码
悲哀

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
5 [报告]
发表于 2014-09-04 09:45 |只看该作者
回复 2# hellioncu


    同样的操作系统和编译器

论坛徽章:
5
2015年迎新春徽章
日期:2015-03-04 09:58:1115-16赛季CBA联赛之上海
日期:2016-01-18 13:24:3015-16赛季CBA联赛之佛山
日期:2016-01-27 10:13:0515-16赛季CBA联赛之北控
日期:2016-08-04 22:33:2115-16赛季CBA联赛之山西
日期:2016-08-06 15:49:33
6 [报告]
发表于 2014-09-04 13:09 |只看该作者
lol 楼主真有财

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
7 [报告]
发表于 2014-09-04 14:58 |只看该作者
本帖最后由 yulihua49 于 2014-09-04 14:59 编辑
netphp 发表于 2014-09-03 18:56
谢谢,楼上的,回来看了一下,确实是我代码写错了,第一个for循环后写了个分号悲哀

所以,unix提倡这么写:
for (i=0;i<2;i++) {
....
}

尾巴加个;没事的。

论坛徽章:
0
8 [报告]
发表于 2014-11-04 17:13 |只看该作者
yulihua49 发表于 2014-09-04 14:58
所以,unix提倡这么写:
for (i=0;i


这样写有道理啊,能防止出错,在for那行多加了;就会报错吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP