免费注册 查看新帖 |

Chinaunix

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

[C] 关于C语言 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-04 01:25 |只看该作者 |正序浏览
请各位看下面的两个程序

main()

{

int i=5,a;

a=(++i)*(++i)*(++i);

printf("%d",a);

}
它的输出结果是什么呢?答案是  512

请看下面的一个程序


main()

{
int i=5;

printf("%d",(++i)*(++i)*(++i));

}

它的输出结果是什么呢,答案是 336
它的结果与上面的那个为什么不同呢?
高手指点一下吧。

论坛徽章:
0
17 [报告]
发表于 2006-11-25 12:07 |只看该作者
Every rule has exception.

未定义,至理名言,记住了,谢谢

我前面的回答有问题,whyglinux 版主已经讲得很明白了。

论坛徽章:
0
16 [报告]
发表于 2006-11-25 12:00 |只看该作者
whyglinux讲的好!受教了。

论坛徽章:
0
15 [报告]
发表于 2006-11-24 13:08 |只看该作者
undefined,  无定义, 长见识了.谢谢大家.

论坛徽章:
0
14 [报告]
发表于 2006-11-06 16:44 |只看该作者
呵呵,有意思!!

论坛徽章:
0
13 [报告]
发表于 2006-11-06 16:23 |只看该作者
whyglinux让初学c的我开眼见了,赞一个
扬子江 该用户已被删除
12 [报告]
发表于 2006-11-04 22:56 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
11 [报告]
发表于 2006-11-04 19:19 |只看该作者

谢谢各位

没有想到还有“无定义”这一个词的存在?各位真是让我开了眼界了。谢谢大家啊。

论坛徽章:
0
10 [报告]
发表于 2006-11-04 18:29 |只看该作者
>> 你的“无定义”一词出自哪? c 标准? 还是 c++ 标准? 还是你的定义? 或者是你的经验之谈?

“无定义”或“未定义”(undefined)是 C/C++ 标准中广泛使用的一个术语,用于指代语法错误之外的一种错误现象。

对于无定义的程序代码,其执行的结果产生的是“无定义行为”(undefined behaviour),即标准对于执行结果不作任何要求(这就是 undefined 的由来—— undefined by the standard),而是放权给编译器任其自由实现。例如,被零除、数组访问越界以及上面提到的表达式等都是未定义的。

可以找一份 C 或者 C++ 标准、或者在网上找一些相关资料来了解这个概念。

论坛徽章:
0
9 [报告]
发表于 2006-11-04 17:39 |只看该作者
原帖由 whyglinux 于 2006-11-4 17:27 发表
(++i)*(++i)*(++i) 表达式中变量 i 被改变三次,多于一次,因此这是一个无定义的表达式,其结果是不确定的。

>> 在同一个编译器中结果应该一样才对

这个结论是得不到保证的。优化选项的不同、执行程序 ...


:wink: 你的“无定义”一词出自哪? c 标准? 还是 c++ 标准? 还是你的定义? 或者是你的经验之谈?
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP