【基础】ABAP不同变量类型之间数值大小比较

来源:互联网 发布:mac 屏幕录像 编辑:程序博客网 时间:2024/05/22 14:10

这个问题很容易被忽视,在这里写了一段代码分析一下三种情况:

DATA:lv_num1 TYPE string.DATA:lv_num2 TYPE string.DATA:lv_num3 TYPE i.DATA:lv_num4 TYPE i.lv_num1 = '1000'.lv_num2 = '50'.lv_num3 = 20.lv_num4 = 60.*-->字符串之间大小比较WRITE:/ '字符串之间大小比较'.IF lv_num1 > lv_num2.  WRITE:/ lv_num1 ,'>', lv_num2.ELSE.  WRITE:/ lv_num1 ,'<=', lv_num2.ENDIF.*-->字符串与数字大小比较WRITE:/ '字符串与数字大小比较'.IF lv_num1 > lv_num4.  WRITE:/ lv_num1 ,'>', lv_num4.ELSE.  WRITE:/ lv_num1 ,'<=', lv_num4.ENDIF.*-->数字之间大小比较WRITE:/ '数字之间大小比较'.IF lv_num3 > lv_num4.  WRITE:/ lv_num3 ,'>', lv_num4.ELSE.  WRITE:/ lv_num3 ,'<=', lv_num4.ENDIF.

运行结果:


分析:

可见字符串之间的比较和我们想象中不一样,因为他是每个字符之间的比较,第一位和第一位比,如第一位相等,第二位和第二位比较,以此类推。
注意i类型长度是8,所以打印结果会有空格;

字符串和数字类型直接比较也是ok的,但是项目中建议同学们还是把类型都转换为数字类型再比较。


思考:

如果string类型换成CHAR类型,大小比较的规律是不是也是如此呢?