Skip to content

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:
Argumentgas (32-bit)gas64 (64-bit)gcc 32-bit (*)gcc 64-bit (*)
[U]BYTE variableINTEGERINTEGERLONGLONG
[U]SHORT variableINTEGERINTEGERLONGLONG
[U]LONG variableINTEGERINTEGERLONGLONG
[U]INTEGER variableINTEGERINTEGERLONGLONG
[U]LONGINT variableLONGINTINTEGERLONGLONG
SINGLE variableSINGLELONGLONGLONG
DOUBLE variableDOUBLELONGLONGLONG
  • Sgn return type for a constant passed as argument:
Argumentgas (32-bit)gas64 (64-bit)gcc 32-bit (*)gcc 64-bit (*)
[U]BYTE constantINTEGERINTEGERINTEGERINTEGER
[U]SHORT constantINTEGERINTEGERINTEGERINTEGER
[U]LONG constantINTEGERINTEGERINTEGERINTEGER
[U]INTEGER constantINTEGERINTEGERINTEGERINTEGER
[U]LONGINT constantLONGINTINTEGERLONGINTINTEGER
SINGLE constantSINGLESINGLESINGLESINGLE
DOUBLE constantDOUBLEDOUBLEDOUBLEDOUBLE

(*): applicable also for clang and llvm

The Sgn unary operator can be overloaded with user defined types.

Examples

start GeSHi

vb
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
0

Dialect Differences

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

Differences from QB

  • None

See also

  • Abs
  • Operator

Back to DocToc

Translated from FreeBASIC official docs. Contact us for removal if infringed.
FreeBASIC is an open-source project, not affiliated with Microsoft