2016-10-05 4 views
-1
int main() { 
    uint64_t k = 1 << 32; 
    return 0; 
} 

Ich versuche, diesen Vorgang zu tun (da ich k erwarten 64 Bit breit sein, aber ich erhalte eine Warnung über die Breite von mehr als. Bin ich falsch, was uint64_t immer 64 Bit sein?uint64_t ist nur 32 Bits breit?

+14

versuchen Versuchen Sie, die * 1 * 64 Bit breit – jaggedSpire

Antwort

4

Was Sie tun mit dem Ergebnis einer Operation hat keinen Einfluss darauf, wie diese Operation ausgeführt wird .. Die Typ-Regeln in C++ sind bereits kompliziert genug - wenn Sie berücksichtigen mussten, was Sie mit dem Ergebnis getan haben, um herauszufinden, wie die Operation ausgeführt würde Sie wären viel komplexer.

Sie haben 1 << 32.Warum würden Sie erwarten, dass ein 64-Bit-Ergebnis zu produzieren?

uint64_t k = 1; 
k <<= 32; 
+0

oder 'uint64_t k = 1ull << 32 zu machen;' – jaggedSpire

+0

Rechts gibt es eine beliebige Anzahl von Möglichkeiten, wie Sie es tun können. –

Verwandte Themen