SGN
- Source: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgSgn
- Last revised: 2024-01-29
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
Sgnreturns1. - If number is equal to zero, then
Sgnreturns0. - If number is less than zero, then
Sgnreturns-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):
Sgnreturn 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 |
Sgnreturn 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.
Examples
start GeSHi
Dim N As Integer = 0
Print Sgn ( -1.87 )
Print Sgn ( 0 )
Print Sgn ( 42.658 )
Print Sgn ( N )end GeSHi
The output would look like:
-1
0
1
0Dialect Differences
- In the -lang qb dialect, this operator cannot be overloaded.
Differences from QB
- None
See also
AbsOperator
Back to DocToc