7.6.2 WMLScript操作符数据类型转换规则 - 编程吧

上一篇 | 下一篇

7.6.2 WMLScript操作符数据类型转换规则

发布: 2007-7-20 13:51 | 作者: 佚名 | 来源: 转载 | 查看: 14次


7.6.2  操作符数据类型转换规则
前面我们介绍的是数据类型转换的一般规则,操作符运算时一方面要遵循这些一般规则,另一方面还要遵循一些与逻辑运算相适应的数据类型转换规则。为了便于大家深入了解操作符数据类型的转换方法,我们下面以各种操作数类型为例,说明一般规则之外的一些附加规则。

(1) 操作数类型为布尔型。即操作符要求操作数的数据类型为布尔型,这种情况下,如果操作数是布尔型或者是能够被转换为布尔型的数据,那么当前操作符就可以进行布尔运算并返回布尔值,否则一律返回invalid。

例如,true && 3.4、1 && 0、"A" || ""或!42等都可以返回布尔值,而!invalid与3 && invalid则都会返回invalid。

(2) 操作数类型为整数型。即操作符要求操作数的数据类型为整数型,这种情况下,如果操作数是整型或者是能够被转换为整型的数,那么就可进行整数运算并返回整数值;否则就会返回invalid。

比如,"7" << 2、true << 2都会返回一个整数值;而7.2 >> 3、2.1 div 4则会返回invalid。

(3) 操作数类型为浮点数型。这种情况下,如果操作数是浮点数或者是能被转换为浮点型的数,那么当前操作符就可以进行浮点运算并返回浮点值,否则就会返回invalid。

(4) 操作数类型为字符串型。此时,如果操作数是字符串类型或者是能够被转换为字符串类型的数据,那么就可进行字符串运算并返回字符串,否则就会返回invalid。

(5) 操作数类型为一目的整数或浮点数。即操作符只要求一个操作数,该操作数需要为整数或浮点数,此时,如果操作数是整数或可以被转换成整数型数值,那么操作符就可进行整数转换并返回整数值,否则返回invalid。例如,+10、-"33"都将返回整数值,+true返回整数值1,-false返回整数值0,等等。

如果操作数是浮点数或者是能被转换为浮点型的数,那么当前操作符将进行浮点运算并返回浮点值。比如,-10.3、+"47.3"等都可返回浮点数值,而-"ABC"、-"9e9999"因不含有合法的浮点数而无法转换,所以返回invalid。

(6) 操作数类型为整数或浮点数(二目)。由于这种情况下有不止一个操作数,所以根据操作数类型的不同有3种处理方法:

如果有一个操作数是浮点数,则就将另外一个数转换为浮点数,并进行浮点运算和返回浮点值。例如,100/10.3、3.4*"4.3"、"2.3"*"3"最后返回的都是浮点数。

如果操作数是整数或者是能够被转换为整型的数,那么就会进行整数运算并返回整数值。如33*44、"10"*3、"10"-"2"的运算结果都是返回一个整数值。

如果操作数都是浮点数,或都能被转换为浮点型的数,那么就会进行浮点运算并返回浮点值。

上述3种情况如果不能成立,则运算结果就会返回invalid。如3.2*"A"、.9*"9e999"以及invalid*1运算后各自返回的都是invalid。

(7) 操作数为整数、浮点数或字符串。这种情况是操作符进行的比较复杂的运算,共有3种情况:

如果操作数是整数或者是能够被转换为整型的数,那么操作符就进行整数运算并返回整数值。比如12+3、3<false的结果都是整数值。

如果有一个操作数是浮点数,那么运算时就将另外的操作数均转换为浮点数,进行浮点运算并返回浮点值。例如,32.4+65、43.2<77、9.9+true都是按照浮点数处理,最后返回的是浮点数值。

如果有一个操作数是字符串,那么运算时就将另外的操作数均转换为字符串,进行字符串运算并返回字符串。比如"12"+5.4、"Hey"<56、2.7+"4.2"最后返回的值都是字符串。

如果上述3种情况都不能成立,则运算结果就会返回invalid。如"A"+invalid返回的就是invalid。

(8) 操作数为任何类型。如果操作符对任何类型的操作数都承认,那么它可接受任何类型的数据进行运算,如=或typeof等操作符均属于此类情况:a = 37.3可以接受并返回浮点数,b = typeof "s"可以接受并返回字符串,等等。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode