打印
[STM8]

奇葩问题

[复制链接]
3640|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dqgcs123|  楼主 | 2014-12-17 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一段代码,定义一个全局变量,float ga; 但是在extern关键字和ga前面没有加float,从网上看,貌似应该没有什么问题,但是后面的代码乱套了,一个不相关的if(A) then B的语句在A为0的情况下居然执行B了,最后在extern后面加上float就正常了,这是怎么回事?
沙发
diweo| | 2014-12-17 15:16 | 只看该作者
1,你的意思是在一个文件中float ga;在另一个文件中extern ga;       ?
2,c语言里面有 if..then.. ?

使用特权

评论回复
板凳
dqgcs123|  楼主 | 2014-12-17 16:56 | 只看该作者
diweo 发表于 2014-12-17 15:16
1,你的意思是在一个文件中float ga;在另一个文件中extern ga;       ?
2,c语言里面有 if..then.. ? ...

是的,if then 只是表达那个意思而已,没有then
后来把extern ga改成extern float ga就好了,ga有用到

使用特权

评论回复
地板
泰山特曲123| | 2014-12-17 18:11 | 只看该作者
印象中,声明没有类型的话当int型。还是养成良好的编码习惯好的。

使用特权

评论回复
5
戈卫东| | 2014-12-17 18:33 | 只看该作者
果然奇葩。。。。。。

使用特权

评论回复
6
搞IT的| | 2014-12-17 18:39 | 只看该作者
哈哈,果然是奇葩的问题啊

使用特权

评论回复
7
mmuuss586| | 2014-12-17 21:50 | 只看该作者

自己代码不规范很正常;

使用特权

评论回复
8
dqgcs123|  楼主 | 2014-12-18 09:49 | 只看该作者
泰山特曲123 发表于 2014-12-17 18:11
印象中,声明没有类型的话当int型。还是养成良好的编码习惯好的。

的确是疏忽,正常情况下我也不会这么写。只不过没有报编译错误,所以很好奇,然后百度了一下,有人说可以不加变量类型关键字,所以特来问问。
即使如你所说,也不应该出现我说的这种bug

使用特权

评论回复
9
dqgcs123|  楼主 | 2014-12-18 11:03 | 只看该作者
搞IT的 发表于 2014-12-17 18:39
哈哈,果然是奇葩的问题啊

:L这表情

使用特权

评论回复
10
dqgcs123|  楼主 | 2014-12-18 11:04 | 只看该作者
mmuuss586 发表于 2014-12-17 21:50
自己代码不规范很正常;

:lol关键是编译器不报错,比较好奇

使用特权

评论回复
11
通宵敲代码| | 2014-12-18 12:06 | 只看该作者
编译器不报错不代表没出错!
再就是找bug最好还是照实写,
举例子就没真实性了。

解决办法:
规范自己的代码,让编译器哭去吧!

使用特权

评论回复
12
dqgcs123|  楼主 | 2014-12-18 12:35 | 只看该作者
戈卫东 发表于 2014-12-17 18:33
果然奇葩。。。。。。

:lol

使用特权

评论回复
13
dqgcs123|  楼主 | 2014-12-18 12:35 | 只看该作者
通宵敲代码 发表于 2014-12-18 12:06
编译器不报错不代表没出错!
再就是找bug最好还是照实写,
举例子就没真实性了。

:L

使用特权

评论回复
14
排山倒海| | 2014-12-18 12:53 | 只看该作者
我看到《高质量C++ C编程指南》等资料网页有建议不要用浮点变量与零值的比较,建议:
if ((x>=-EPSINON) && (x<=EPSINON))
其中EPSINON是允许的误差(即精度)。

另外一个问题if(A)这个风格是逻辑(或者叫布尔变量)判断方式,我更愿意使用以上建议风格。

使用特权

评论回复
15
dqgcs123|  楼主 | 2014-12-18 13:00 | 只看该作者
排山倒海 发表于 2014-12-18 12:53
我看到《高质量C++ C编程指南》等资料网页有建议不要用浮点变量与零值的比较,建议:
if ((x>=-EPSINON) && ...

。。。。。。你的第一个建议是怎么想到的?我没有提出这个问题

使用特权

评论回复
16
苏山人家| | 2014-12-18 13:07 | 只看该作者
编译器只能检查小部分错误。

使用特权

评论回复
17
dqgcs123|  楼主 | 2014-12-18 13:20 | 只看该作者
苏山人家 发表于 2014-12-18 13:07
编译器只能检查小部分错误。

:lol这次终于有体会了

使用特权

评论回复
18
排山倒海| | 2014-12-18 21:20 | 只看该作者
dqgcs123 发表于 2014-12-18 13:00
。。。。。。你的第一个建议是怎么想到的?我没有提出这个问题

没什么特意的,之前看书看到有类似这样的问题例程。

使用特权

评论回复
19
dqgcs123|  楼主 | 2014-12-22 09:13 | 只看该作者
排山倒海 发表于 2014-12-18 21:20
没什么特意的,之前看书看到有类似这样的问题例程。

你是哪里工作的?

使用特权

评论回复
20
排山倒海| | 2014-12-22 12:39 | 只看该作者
dqgcs123 发表于 2014-12-22 09:13
你是哪里工作的?

深圳
有什么想法?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下

26

主题

670

帖子

1

粉丝