| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 2018 人关注过本帖
标题:(2)C语言问题之同一串代码在VC和codeblocks编译运行产生了不同的结果
取消只看楼主 加入收藏
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
以下是引用TonyDeng在2015-10-18 17:09:03的发言:

首先,这么简单的问题,没必要去怀疑编译器。现在你已发现这跟精度有关,那么第二个问题来了,既然做整数运算,干嘛用浮点版本的函数?最后一个,用==比较的时候,需要注意什么?

抱歉,回复得有些晚。
首先,第二个问题,应该是因为pow(x,y)其作用是计算x的y次方,x、y及函数值应该都是double型才对,因此要用浮点版本的函数。
最后一个,应该是要注意两边数据类型相同,不知道回答对了没?

我也还想再问一个问题:“出错的根本原因是违反逻辑写代码。”,这里的“违反逻辑”能稍微说得详细一些吗,有点不理解

[此贴子已经被作者于2015-10-18 20:58编辑过]

2015-10-18 20:56
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
T版大人,您好,我觉得在回答您的问题之前,还是有必要向您请教请教的。
首先,我今年大一,普通的二本吧,专业软件工程。一个半月的学习下来,我就发现了很多问题:

1.我们每周只有1节C语言的专业课,每节课95分钟吧,老师讲的内容虽说比较繁琐但“自我感觉”还能消化掉,不知道是不是刚入门的原因,老师每节课讲的例子的代码,基本上不超过10行,所以感觉一周就这样一节“水课”,收获好像不大(当然也不排除我有好高骛远,基础没打牢的嫌疑)。问题就来了:其余的时间该怎么继续对这门语言进行深入学习?也是需要自学吗?

2.幸好我们学院还算比较重视ACM的比赛吧,据说最好的名次是华东赛区一等奖,学校里有个社团(ACM训练营)是参赛的主力,社团每周会对成员进行集训,然后进行相应的题目竞赛。集训的内容是我们上C课进度的好几倍,举个例子来说,这周是第三周集训,内容是数组&字符串;第一周集训的内容主要是while(EOF!=scanf())循环(话说我到现在也只会用,不知道为啥能一直循环下去)——重要的问题就又来了:一个半月过去了,我们的C语言专业课还没讲到第一周的集训内容……

3.学校有自己的OJ,可以在上面刷题(前面提到还有题目竞赛),这么说吧,现在我相对于我班的其他非社团成员现在在写代码的能力上要高一些的原因都可以归功于OJ上的刷题。老实说,即使是一些社团成员,也有懒散的,不刷题的,甚至夸张点说,如果跟着老师的步子走,估计现在输出“Helllo world!”都不是那么“行云流水”……但是刷题也刷出问题来了:前面不是说ACM的进度很快么,还有比赛,这就导致我现在感觉知识断层很严重,左一块,右一块的,有种是为了做题而做题的感觉……

总的来说,差不多就是如何在课外,利用好身边的资源(如ACM训练营)真正地提高自己的编程能力呢?可以看一些什么样的书籍呢?或者对于我现在的情况您有没有什么好的建议?不想做一个堕落的大学生。

希望可以得到一些指点
2015-10-18 21:56
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
T版,首先要跟你说声抱歉的是,你写的这个很简单的pow()函數我其实并不是能完全看懂,但我会保存下来,等学习到相关知识的时候再回过头来进行反思。

其实通过这两天跟你的对话,给我的启发在C中重要的还是基础逻辑思维。首先说基础,扪心而问,这一个月下来,经过协会的几次集训,因为心里一直想在题目竞赛上取得好名次,所以脑海中只有一个念头:把题做出来!把题做出来!!把题做出来!!!且不说代码代码合理与否,光是代码的排版自己也看得不顺心,只要求做题的速度与结果——AC,做完题进行反思&总结也是了了完事。这就导致了现在都不能把数据类型有些啥说个大概,总之感觉基础真的渣。

再就是逻辑思维,就拿我这题来说:“處理數據均是整數,在邏輯上就不應調用浮點類型的函数”。我们集训的时候只说了pow()可用于高次运算,也没提到它的使用对象为浮点类型的数据,这也可以反映出基础问题和急功近利的心态。我们现在用的专业书《C语言程序设计》(第二版)里有这样一段话:强转(强制转化类型)与指针,犹如传说中的倚天剑和屠龙刀,可并称为C语言的两大神器,用好了可以呼风唤雨,用坏了则损兵折将。因此,必须恰当使用。我觉得其中所含的一些道理与你说的“逻辑优先,不要靠技巧!”基本一致。

[此贴子已经被作者于2015-10-19 20:17编辑过]

2015-10-19 20:15
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
毕竟是大学刚开学,初次接触C语言,我应该端正心态,夯实基础!夯实基础!!夯实基础!!!不能被眼前的一些蝇头小利(竞赛名次)蒙住双眼,集训固然对自身提高起着一定作用,但重要的还是平时自己对C的理解与感悟。

T版大人,谢谢啦!你还让我了解ACM比赛的性质和以后工作的些许情况以及它们二者之间的区别。第一次有种“听君一席话,胜读十年书”的感觉——不是拍你的马屁哦~~~
2015-10-19 20:17
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
以下是引用TonyDeng在2015-10-20 04:20:12的发言:



你寫3個x連乘也比調用浮點函數強!

嗯,的确是。
2015-10-20 15:07
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
T版原谅我次次回复得都这么慢

数据类型与所调用的数值函数不一致时,便会引发歧义,这一副作用是毒瘤,应该尽量避免甚至杜绝其的出现,“若要写出可移植性高的代码,你应该总是要求实参类型精确匹配”——谨记!
“逻辑优先,不要靠技巧”,这几天学到的感觉真心受用

感谢TonyDeng指出一条明路
2015-10-20 17:27
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
回复 34楼 TonyDeng
嗯,绝对的干货,T版推荐的,一定要亲自去尝试尝试。明天就去图书馆看看有这几本书没,没的话我们还有淘宝

[此贴子已经被作者于2015-10-20 23:28编辑过]

2015-10-20 23:26
快速回复:(2)C语言问题之同一串代码在VC和codeblocks编译运行产生了不同的结果 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028140 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved