Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C++] Funzione segno

  1. #1

    [C++] Funzione segno

    Esiste una funzione di libreria che dato un intero mi restituisca +1 se è positivo, -1 se è negativo e 0 se è nullo?
    Se non è proprio così almeno qualcosa di simile...

  2. #2
    No, ma te la puoi scrivere (magari in versione template) in 10 secondi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Beh ad esempio la signbit() ho visto che mi ritorna 0 se il numero è non negativo, ma se è negativo ritorna 512...perchè?

  4. #4
    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è?
    La documentazione dice:
    The signbit() macro returns nonzero if the sign of x is negative; otherwise it returns zero.
    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.

    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:
    codice:
    template<typename T>
    T sign(T In)
    {
        if(In>(T)0)
            return 1;
        else if(In<(T)0)
            return -1;
        return 0;
    }
    Il compilatore dovrebbe essere sufficientemente furbo da ottimizzare questa roba in maniera adeguata.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.