繁体   English   中英

NUMIN生产错误output,如何得到正确答案?

[英]NUMIN producing wrong output,how to get right answer?

我正在创建一个程序来计算数字的位数

当我将值放入 5 位时,它会产生正确的答案,但是当我将值放入 6 位时,它会产生错误的值。

为了查看代码中发生的情况,我调试了代码,发现当我输入 5 位数字时,它会正确地从字符串转换为 int,但是当我输入 6 位值时,它会将值转换错误并给出一些负值。

我在用

CALL NUMIN(AB,NUM,10,STAT);

AB 是一个字符串 ab[0:40]

NUM 是 Integer

STAT 是一个字符串 STAT[0:50]

在 TAL 中,无符号 Integer 的范围从0 到 65,535 ,有符号的 Integer 的范围从-32,768 到 32,767 ,因此不可能将 6 位数字输入到字符串中并使用 NUMIN GPC(Guardian 程序调用)进行转换。

相反,您可以使用带符号的双字 integer INT(32).EXT,它是 32 位 integer,范围为 -2,147,483,648 至 2,147,483,647 ,您可以轻松使用 6 位以上的输入。 要将 6 个字符或超过 6 个字符的字符串转换为 Integer 使用 DNUMIN GPC

DNUMIN ( ascii-num 
        ,signed-result
        ,base
        ,status ); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM