La documentazione dice:Originariamente inviato da starcraftworld
Beh ad esempio la signbit() ho visto che mi ritorna 0 se il numero è non negativo, ma se è negativo ritorna 512...perchè?
Per cui qualunque valore diverso da zero indica che il numero è negativo; quel 512 probabilmente deriva da un'operazione di and binario sul bit del segno.The signbit() macro returns nonzero if the sign of x is negative; otherwise it returns zero.
In ogni caso, signbit funziona solo sui tipi in virgola mobile, e non è standard C++, ma C99.
Ribadisco, in C++ ti puoi scrivere una funzione del genere in questa maniera:
Il compilatore dovrebbe essere sufficientemente furbo da ottimizzare questa roba in maniera adeguata.codice:template<typename T> T sign(T In) { if(In>(T)0) return 1; else if(In<(T)0) return -1; return 0; }