免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 5456 | 回复: 30

[C] 百度看见一题,同求解 [复制链接]

论坛徽章:
0
发表于 2012-10-12 17:44 |显示全部楼层
本帖最后由 FaintKnowledge 于 2012-10-12 17:48 编辑

i=0;
while(i<n)
y=x[i++];

错在哪里?

多谢多谢!

调试信息:
  1. 1       #include "stdlib.h"
  2. 2       #include "stdio.h"
  3. 3
  4. 4       int main() {
  5. 5        int a[5]={1,2,3,4,5};
  6. 6        int y[5];
  7. 7        int i,n=5;
  8. 8        i=0;
  9. 9        while (i < n)
  10. 10       {   y[i] = a[i++];
  11. (gdb) l
  12. 11         printf("%d",y[i]);
  13. 12      }
  14. 13      
  15. 14      }
  16. (gdb) break 11
  17. Breakpoint 1 at 0x804843c: file simpl.c, line 11.
  18. (gdb) break 10
  19. Breakpoint 2 at 0x8048427: file simpl.c, line 10.
  20. (gdb) break 12
  21. Breakpoint 3 at 0x804845f: file simpl.c, line 12.
  22. (gdb) run
  23. Starting program: /root/a.out

  24. Breakpoint 2, main () at simpl.c:10
  25. 10       {   y[i] = a[i++];
  26. (gdb) print y[0];
  27. Invalid character ';' in expression.
  28. (gdb) print y[0]
  29. $1 = -1209687642
  30. (gdb) print a[i]
  31. $2 = 1
  32. (gdb) print i
  33. $3 = 0
  34. (gdb) print a[i++]
  35. $4 = 1
  36. (gdb) print y[0]
  37. $5 = -1209687642
复制代码
原文地址:http://zhidao.baidu.com/question/486211476.html

论坛徽章:
0
发表于 2012-10-12 18:17 |显示全部楼层
y[i] = a[i++];

论坛徽章:
0
发表于 2012-10-12 19:00 |显示全部楼层
数组越界了....

论坛徽章:
0
发表于 2012-10-12 20:26 |显示全部楼层
2楼正解,一个表达式里面的变量或者函数参数的求值顺序是“未定义的行为”,c里面“未定义的行为”就是错误,即使有些编译器能正确编译

论坛徽章:
0
发表于 2012-10-13 09:31 |显示全部楼层
回复 4# ethantsien


你说的这个未定义怎么理解啊?什么意思?

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
发表于 2012-10-13 09:35 |显示全部楼层
google 序列点

论坛徽章:
0
发表于 2012-10-13 11:21 |显示全部楼层
这个是否可以详细讲一下,THS!
回复 4# ethantsien


   

论坛徽章:
0
发表于 2012-10-13 21:07 |显示全部楼层
2007robot 发表于 2012-10-13 11:21
这个是否可以详细讲一下,THS!
回复 4# ethantsien


就是说C标准没有定义这个行为,C标准把它的具体实现交给了编译器,所以说,这种未定义的行为不具有可移植性,即使有些编译器能够编译通过。

论坛徽章:
3
15-16赛季CBA联赛之山东
日期:2016-10-30 08:47:3015-16赛季CBA联赛之佛山
日期:2016-12-17 00:06:31CU十四周年纪念徽章
日期:2017-12-03 01:04:02
发表于 2012-10-13 22:35 |显示全部楼层
本帖最后由 captivated 于 2012-10-13 22:49 编辑

你妹, 编辑掉. 确实是未定义行为. 擦.

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
发表于 2012-10-14 01:19 |显示全部楼层
回复 9# captivated


    你把我召唤过来又编辑掉了………………好吧,算了,我大概猜到你想说啥。进步了哈,学会编辑了……


我个人建议,别完全删掉,前头加一段,然后后面留着我们鉴赏一下,而且这个态度也更坦诚~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP