"-" - Arithmetic Subtraction Operation

This section provides some detail rules and a tutorial example on how arithmetic subtraction operation works in VBScript.

Here are some detail rules about the arithmetic operation - subtraction:

• Arithmetic subtraction operation uses the subtraction operator: "-"
• Arithmetic subtraction operation requires that at least one of the operands is a numeric subtype: Byte, Integer, Long, Single or Double.
• If an operand is not a numeric subtype, it will be converted into a numeric subtype.
• The Boolean subtype is considered as a numeric subtype in a subtraction operation. "True" represents a numeric value of -1. "False" represents a numeric value of 0.
• The Empty subtype is considered as a numeric subtype in a subtraction operation. "Empty" represents a numeric value of 0.
• When a String value is used in a subtraction operation, it will be parsed into a Double value. If the parsing process fails, the subtraction operation will raise the "Type mismatch" runtime error.
• The returning value is the result of the first operand subtracted by the second operand.
• The subtype of the returning value is determined by the returning value range and subtypes of operands.

Here is a tutorial example showing you how arithmetic subtraction operation rules work:

```<html>
<body>
<!-- subtraction_operation.html
-->
<pre>
<script language="vbscript">
document.writeln("3-7=" & (3-7) & " : " & TypeName(3-7))
document.writeln("3-777777=" & (3-777777) & " : " _
& TypeName(3-777777))
document.writeln("3-9.99=" & (3-9.99) & " : " & TypeName(3-9.99))
document.writeln("3-333.333e200=" & (3-333.333e200) & " : " _
& TypeName(3-333.333e200))
document.writeln("3-""7""=" & (3-"7") & " : " & TypeName(3-"7"))
'  document.writeln("3-""7Hello""=" & (3-"7Hello") & " : " _
'     & TypeName(3-"7Hello"))
document.writeln("3-True=" & (3-True) & " : " & TypeName(3-True))
document.writeln("3-False=" & (3-False) & " : " _
& TypeName(3-False))
document.writeln("True-False=" & (True-False) & " : " _
& TypeName(True-False))
document.writeln("3-Empty=" & (3-Empty) & " : " _
& TypeName(3-Empty))
</script>
</pre>
</body>
</html>
```

Here is the output of this VBScript example script:

```3-7=-4 : Integer
3-777777=-777774 : Long
3-9.99=-6.99 : Double
3-333.333e200=-3.33333E+202 : Double
3-"7"=-4 : Double
3-True=4 : Integer
3-False=3 : Integer
True-False=-1 : Integer
3-Empty=3 : Integer
```

The output confirms some of arithmetic subtraction operation rules:

• "3-7=-4 : Integer" shows that the result is an Integer value, because the result is small value and both operands are Integer values.
• "3-777777=-777774 : Long" shows that the result is a Long value, because the result is large value outside the Integer value range.
• "3-9.99=-6.99 : Double" shows that the result is a Double value, because the second operand is a Double value. "9.99" is a Double literal. See the data literal section in the previous chapter.
• "3-"7"=-4 : Double" shows that the result is a Double value, because the second operand is a Double value. When a string is parsed into a numeric value, it returns a Double value.
• The statement on (7-"7Hello") is commented out, because string "7Hello" can not parsed into a Double value.
• "True-False=-1 : Integer" shows that VBScript recognizes True as -1 and False as 0.

By the way, arithmetic unary negation, works in the same way as subtraction, if you insert 0 before the "-" operator.