设为首页 - 加入收藏 - 网站地图 - RSS订阅 村姑网-www.cunguer.com
当前位置:首页 > 软件开发 > 易语言 > 正文

易语言判断、如果真、文本到整数比较时,调试时运行正常,编译后不正常

时间:2018-08-01 23:23:51 来源:村姑网 作者:喜欢安静 阅读:0
导读:今天在用易语言帮一个客户写程序的时候,发言一个奇怪的问题,就是在用判断、如果真命令比较2个文本到整数后的值时,在调试运行的时候,一切正常,但是编译出来后,运行不正常,不符合逻辑,最终经过调试输出,发现是因为文本到整数后,超出了易语言整数型变量的范围引起的该问题...

今天在用易语言帮一个客户写程序的时候,发言一个奇怪的问题,就是在用判断、如果真命令比较2个文本到整数后的值时,在调试运行的时候,一切正常,但是编译出来后,运行不正常,不符合逻辑,最终经过调试输出,发现是因为文本到整数后,超出了易语言整数型变量的范围引起的该问题。下面记录一下我解决问题的过程。

刚开始的代码是这样的:
.版本 2

文本1 = “20180801115”
文本2 = “20180801116”

如果真 (到整数(文本1)+1 = 到整数(文本2))

调试运行的时候,程序是按照我的思路走的,没问题。

但是静态编译为exe程序后,上面的如果真里面的判断如同废弃,没有丝毫作用,程序就运行不正常了。

开始以为是【如果真】命令的问题,遂改为【判断】,结果问题依旧。

那么,就调试看看喽,把上面程序修改为以下内容:

.版本 2
.支持库 spec

.局部变量 数字1, 整数型
.局部变量 文本1, 文本型
.局部变量 数字2, 整数型
.局部变量 文本2, 文本型

文本1 = “20180801115”
文本2 = “20180801116”
数字1 = 到整数 (文本1) + 1
数字2 = 到整数 (文本2)
调试输出 (数字1, 数字2)
.判断 (数字1 = 数字2)

调试输出的内容为:
* -1294035364 | -1294035364

看到这里,猛然想起,会不会是【数字1和数字2】的长度大于了整数型的最大范围了,结果百度一下,还真的是,易语言整数型的范围是:-2,147,483,648 到 2,147,483,647,明显的,我们的数字超过了这个范围。

那么,找到原因了,问题就好解决了,只需把【数字1、数字2】声明为“长整数”类型,【到整数()】修改为【到长整数】即可,修改后如下:
.版本 2
.支持库 spec

.局部变量 数字1, 长整数型
.局部变量 文本1, 文本型
.局部变量 数字2, 长整数型
.局部变量 文本2, 文本型

文本1 = “20180801115”
文本2 = “20180801116”
数字1 = 到长整数 (文本1) + 1
数字2 = 到长整数 (文本2)
调试输出 (数字1, 数字2)
.判断 (数字1 = 数字2)

然后再次调试看看,结果如下:
* 20180801116 | 20180801116

OK,到此为止,结果正常了,希望本文能给遇到同样问题的同学一些帮助。
 

《易语言判断、如果真、文本到整数比较时,调试时运行正常,编译后不正常》地址:http://www.cunguer.com/article/346.html,本文来自村姑网,您身边的IT专家 www.cunguer.com,转载请注明出处,您的支持是我们创作的源泉~!