Sgn
Returns the sign part of a number
Syntax
`
Declare Function Sgn ( ByVal number As numtype ) As numtype
`
Usage
`
result = Sgn( number )
`
Parameters
`number`
the number to find the sign of
`numtype`
a numeric type
Return Value
Returns the sign part of `number`.

- If number is greater than zero, then `Sgn` returns `1`.
- If number is equal to zero, then `Sgn` returns `0`.
- If number is less than zero, then `Sgn` returns `-1`.

Description
The required `number` argument can be any valid numeric expression.
Unsigned numbers of size greater than or equal to `SizeOf(Any Ptr)` will be treated as if they were signed, i.e. if the highest bit is set the number will be treated as negative, and `-1` will be returned.
Note:
The return type of `Sgn` depends on the type of the passed argument (variable or constant, its data type), and of the used backend (gas, gas64, gcc 32-bit, gcc 64-bit):
- `Sgn` return type for a variable passed as argument:

Argument | gas (32-bit) | gas64 (64-bit) | gcc 32-bit (*) | gcc 64-bit (*)
[U]BYTE variable | INTEGER | INTEGER | LONG | LONG
[U]SHORT variable | INTEGER | INTEGER | LONG | LONG
[U]LONG variable | INTEGER | INTEGER | LONG | LONG
[U]INTEGER variable | INTEGER | INTEGER | LONG | LONG
[U]LONGINT variable | LONGINT | INTEGER | LONG | LONG
SINGLE variable | SINGLE | LONG | LONG | LONG
DOUBLE variable | DOUBLE | LONG | LONG | LONG

- `Sgn` return type for a constant passed as argument:

Argument | gas (32-bit) | gas64 (64-bit) | gcc 32-bit (*) | gcc 64-bit (*)
[U]BYTE constant | INTEGER | INTEGER | INTEGER | INTEGER
[U]SHORT constant | INTEGER | INTEGER | INTEGER | INTEGER
[U]LONG constant | INTEGER | INTEGER | INTEGER | INTEGER
[U]INTEGER constant | INTEGER | INTEGER | INTEGER | INTEGER
[U]LONGINT constant | LONGINT | INTEGER | LONGINT | INTEGER
SINGLE constant | SINGLE | SINGLE | SINGLE | SINGLE
DOUBLE constant | DOUBLE | DOUBLE | DOUBLE | DOUBLE

(*): applicable also for clang and llvm
The `Sgn` unary `Operator` can be overloaded with user defined types.
Example
`
Dim N As Integer = 0
Print Sgn ( -1.87 )
Print Sgn ( 0 )
Print Sgn ( 42.658 )
Print Sgn ( N )
`
The output would look like:

    -1
    0
    1
    0

Dialect Differences

- In the -lang qb dialect, this operator cannot be overloaded.

Differences from QB

- None

See also

- `Abs`
- `Operator`