CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

看不明白什么原因

楼主majiaking3(majiaking3)2005-05-17 21:39:25 在 C/C++ / C语言 提问

main()  
  {  
  int   i,j,a[13];  
  i=16;j=i+++i;   printf("\n%d\n",j);  
  i=15;   printf("%d\t%d\n",++i,i);  
  i=20;j=i--+i;   printf("%d\n",j);  
  i=13;   printf("%d\t%d\n",i++,i);  
  i=12;   a=i--;   printf("%d\t%d\n",a[11],a[12]);  
  }  
   
  上面这道题我在TC2.0上运行的结果是:  
   
  32  
  16           15  
  40  
  13             13  
  64               12  
   
  而在Win_tc   上运行结果是:  
  32  
  16           15  
  40  
  13             13  
  0               12  
   
  我不明白a[11]都没有赋值,在TC上运行为什么会得64,谁可以解释一下吗?在Win_tc   下运行为什么又是0呢?  
  问题点数:20、回复次数:11Top

1 楼thtfgao(忧郁王子)回复于 2005-05-17 22:04:47 得分 0

你的数组都没赋值,会有结果我都已经很惊奇了,按理说那个数应该很不规则才对  
  另外tc跟win   tc的结合方式不同,正确的程序也会有两个不同的结果Top

2 楼majiaking3(majiaking3)回复于 2005-05-17 22:11:54 得分 0

而且还没有报错!没警告!想不通啊!狂郁闷……Top

3 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-05-17 22:20:42 得分 0

a=i--;  
  -----  
  晕,居然给数组名赋值Top

4 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-05-17 22:21:12 得分 0

明显编译通不过的。Top

5 楼majiaking3(majiaking3)回复于 2005-05-17 22:42:46 得分 0

main()  
  {  
  int   i,j,a[13];  
  i=16;j=i+++i;   printf("\n%d\n",j);  
  i=15;   printf("%d\t%d\n",++i,i);  
  i=20;j=i--+i;   printf("%d\n",j);  
  i=13;   printf("%d\t%d\n",i++,i);  
  i=12;   a[i]=i--;   printf("%d\t%d\n",a[11],a[12]);  
  }  
  不好意思   复制代码时出错了  
  应该是现在这个样子   麻烦看看Top

6 楼fishyqd(小鱼儿-刚出来混)回复于 2005-05-17 23:23:50 得分 0

a[11]没有赋值所以这样,它输出的是编译器初始化数组的默认值.各编译器不同所以输出也不同Top

7 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-05-18 00:10:43 得分 0

数组没有初始化的原因Top

8 楼SaiRose(Learning......)回复于 2005-05-18 09:00:19 得分 0

i=15;   printf("%d\t%d\n",++i,i);  
  i=13;   printf("%d\t%d\n",i++,i);  
  这种语句和编译器有关,最好别这么写  
  i=12;   a[i]=i--;   printf("%d\t%d\n",a[11],a[12]);  
  a[11]没赋值Top

9 楼zhaoliang_chen(龙行天下)回复于 2005-05-18 09:20:54 得分 0

数组初始化的问题.随编译器的不同而不同  
  建议使用数组前初始化Top

10 楼whyglinux(山青水秀)回复于 2005-05-18 09:54:54 得分 20

如果在一个表达式中一个变量被改变一次或以上,但是却被使用两次或以上,则按照C/C++标准,这个表达式是没有定义的,其结果与表达式中操作数的计算顺序有关,是不固定的。你上面给出的表达式,包括   a[i]=i--,其结果都是无定义的。如果   i=12;,你无法预测   a[i]=i--   是把   12   给   a[12]   还是   a[11]   赋值。Top

11 楼hblinlin(木木)回复于 2005-05-18 09:59:04 得分 0

不知道这种题目有什么意义~Top

相关问题

  • 真是不明白是什么原因???
  • 很简单的一段代码,不明白为什么不能通过连接,请大家帮我看看是什么原因.
  • 这是什么原因。搞不明白了。数据库update的问题????
  • 我的程序编译出现如下错误,看不明白,请问应该从什么方面入口找原因?谢谢各位了。
  • 灌水贴子,有什么不明白到www.52jsp.com论坛看看
  • 不明白为什么?高人帮忙看看
  • 真不明白,这是为什么:?看看错在那里
  • 不明白为什么错了,请帮忙看一下
  • sql 语句看不明白是什么意思?
  • 我实在是看不明白是什么意思?

关键词

  • 编译器
  • 赋值
  • 数组
  • 表达式
  • 初始化
  • tc
  • printf
  • 结果
  • 不同
  • 上运行

得分解答快速导航

  • 帖主:majiaking3
  • whyglinux

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo