Art der Dezimalkonstante hängt von der Art, in der sie dargestellt werden kann, je 6.4.4.1 Integer constants:
The type of an integer constant is the first of the corresponding list in which its value can be represented.
(die Tabelle in dem Link für Sie, wie C-Sprache sagt die tatsächliche Art von Integer-Konstanten ist abgeleitet).
In der Regel kann ein vorzeichenbehafteter int den Wert 4026658824
nicht darstellen. Also, 4026658824
hat wahrscheinlich Typ long int
oder long long int
auf Ihrem System. Wenn unsigned int
kann 4026658824
darstellen, dann ist das in Ordnung, aber Ihr Compiler ist vorsichtig.
Sie könnten u
oder U
Suffix verwenden oder es zu unsigned int
umwandeln. Das Suffix u
funktioniert möglicherweise nicht, wenn die Ganzzahlkonstante einen größeren Wert hat. Beispiel: Wenn 17179869184u
nicht durch unsigned int
dargestellt werden kann, kann der Typ unsigned long int
oder unsigned long long int
lauten, und Sie erhalten möglicherweise trotzdem eine Diagnose.
'unsigned int' liegt im Bereich [0, 2^32-1]. –
Was ist Ihre Plattform? – LPs
@YuriyIvaskevych Ja, was? Das Problem bezieht sich nicht auf unsigned int, aber auf die Regeln für welchen Typ der Compiler für eine Integer-Konstante wählt. Eine bessere Compiler-Warnung wäre gewesen: "warning: implizite Konvertierung von long int in unsigned int". – Lundin