C: cast von int auf size_t

Was ist der richtige Weg, um zu konvertieren/umwandeln eines int zu einem size_t im C99-auf 32-bit und 64-bit-linux-Plattformen?

Beispiel:

int hash(void * key) {
    //...
}

int main (int argc, char * argv[]) {
    size_t size = 10;
    void * items[size];
    //...
    void * key = ...;
    //Is this the right way to convert the returned int from the hash function
    //to a size_t?
    size_t key_index = (size_t)hash(key) % size;
    void * item = items[key_index];
}
Ich sehe nicht, warum es nicht funktionieren würde.
Was ist das problem mit einer normalen plain-cast (size_t)? Ist es irgendwie nicht "richtig"?
Ja, das ist richtig, aber ich denke, es ist implizit konvertiert werden, damit Sie nicht wirklich müssen die (size_t).
Was ist das problem mit nicht Gießen?

InformationsquelleAutor cpburnz | 2011-03-30

Schreibe einen Kommentar