C # - Der konstante Wert '4294901760' kann nicht in 'int' konvertiert werden

7

Grüße,

Ich kann nicht glauben, dass ich eine so grundlegende Frage stelle, aber es macht keinen Sinn, hier ist es also:).

In C # unter Windows Phone 7 / .net versuche ich, eine Konstante in einer Klasse wie folgt zu definieren:

%Vor%

Wenn ich es so umgebe, bekomme ich einen weiteren Fehler:

%Vor%

Aber ich weiß, dass mein int 32-bit ist, hat also einen Bereich von -2.147.483.648 bis 2.147.483.647, siehe Ссылка

Was gibt's?

Vielen Dank im Voraus!

Schwein

    
swinefeaster 17.05.2011, 07:24
quelle

5 Antworten

16

Wie Sie bemerken, ist der Bereich von Int32 -2.147.483.648 bis 2.147.483.647, also kann jede Zahl innerhalb dieses Bereichs gehalten werden, aber NUR Zahlen innerhalb dieses Bereichs können gehalten werden. 4,294,901,760 ist größer als 2,147,483,647, passt also nicht in%%.

Was Sie dagegen tun müssen, hängt davon ab, was Sie erreichen möchten. Wenn Sie nur ein Int32 mit dem Bitmuster Int32 wollen, dann verwenden Sie ffff0000 :

%Vor%

unchecked hat jetzt den Wert -65536, was bedeutet, dass dieses Bitmuster als vorzeichenbehaftete Ganzzahl interpretiert wird.

Aber! Wenn Sie eigentlich den Wert 4.294.901.760 wollen, sollten Sie einen passenden Datentyp verwenden - also y .

    
AakashM 17.05.2011, 07:26
quelle
4

int ist eine vorzeichenbehaftete ganze Zahl von -2.147.483.648 bis 2.147.483.647.
Was Sie wollen, ist eine vorzeichenlose Ganzzahl, d. H.% Co_de%, genau wie die erste Fehlermeldung Ihnen sagt.

    
Daniel Hilgarth 17.05.2011 07:28
quelle
2
%Vor%     
Guillaume 17.05.2011 07:29
quelle
2

Versuchen Sie es mit der Option unchecked, wie von der Compiler-Nachricht vorgeschlagen:

%Vor%

Dies definiert RED als -65536, was 0xffff0000 ist, interpretiert als signed int.

    
Henrik 17.05.2011 07:28
quelle
1

Dies sollte dich um das ungeprüfte herumbringen:

%Vor%     
ChrisWue 17.05.2011 07:35
quelle

Tags und Links