Was passiert, wenn ich in C long int zu int zuweisen?

In einer vergangenen Hausaufgabe ich habe gesagt, verwenden long variable zum speichern ein Ergebnis, da es eine große Zahl.

Ich beschlossen zu prüfen, wird es wirklich wichtig für mich, auf meinem system (intel core-i5 - /64-bit windows 7/gnu gcc-compiler) und fand heraus, dass der folgende code:

printf("sizeof(char) => %d\n", sizeof(char));
printf("sizeof(short) => %d\n", sizeof(short));
printf("sizeof(short int) => %d\n", sizeof(short int));
printf("sizeof(int) => %d\n", sizeof(int));
printf("sizeof(long) => %d\n", sizeof(long));
printf("sizeof(long int) => %d\n", sizeof(long int));
printf("sizeof(long long) => %d\n", sizeof(long long));
printf("sizeof(long long int) => %d\n", sizeof(long long int));

erzeugt die folgende Ausgabe:

sizeof(char) => 1
sizeof(short) => 2
sizeof(short int) => 2
sizeof(int) => 4
sizeof(long) => 4
sizeof(long int) => 4
sizeof(long long) => 8
sizeof(long long int) => 8

In anderen Worten, auf meinem system int und long sind die gleichen, und was zu groß für int zu halten, wird zu groß für long halten, wie gut.

Die Hausaufgabe selbst ist nicht das Problem hier. Ich Frage mich, wie auf einem system, wo int < long sollte ich weisen Sie eine int zu lange?

Ich bin mir bewusst, der Tatsache, dass dort sind zahlreiche eng Verwandte Fragen zu diesem Thema, aber ich habe das Gefühl, dass die Antworten innerhalb dieser nicht mir das komplette Verständnis von dem, was wird oder kann passieren, in den Prozess.

Grundsätzlich bin ich versucht, herauszufinden, die folgenden:

  1. Sollte, und ich warf long zu int vor der Zuweisung, oder da long
    ist nicht einen anderen Datentyp, sondern nur ein Modifikator

    als unschädliche zu weisen direkt?
  2. Was passiert auf Systemen, auf denen long > int? Wird das Resultat sein
    nicht definiert (oder unberechenbar) oder es führt dazu, dass die zusätzlichen Teile der
    variable weggelassen werden?
  3. Wie funktioniert die Umwandlung von long zu int funktioniert in C?
  4. Wie funktioniert die Zuordnung von long zu int funktioniert in C, wenn ich nicht
    verwenden casting?

InformationsquelleAutor der Frage Khaloymes | 2012-11-30

Schreibe einen Kommentar