ein Kapitel zurück                                           ein Kapitel weiter

Die int-Variable muss, laut ANSI C, mindestens eine Größe von 2 Bytes aufweisen. In diesen 2 Bytes haben Ganzzahlen im Wert von -32768 bis +32767 Platz.
Wobei die Ganzzahlvariable long, die lernen sie später kennen, schon ein Größe von 4 Bytes und somit Werte von -2147483648 bis + 2147483647 aufnehmen kann. Wenn jetzt die Variable long aber jetzt z.B. einen Wert von 100.000 hat, passt dieser Wert logischerweise nicht mehr in die Variable int.

Und jetzt kommen wir zum ersten Mal in Kontakt mit verschiedenen Systemen. Auf 16bit-Systemen mag das oben geschriebene zutreffen. Dort ist ein Integer (int) 2 Bytes gross. Die Zeit der 16bit ist aber nun schon bald Schnee von gestern und trifft eigentlich nur noch auf MS-Dos und Win3.1 Compiler zu. Linux, Windows (ab 95) und Macintosh sind alles schon Betriebsystem auf 32bit-Basis. Und 32 Bits sind 4 Byte. Somit beträgt der maximale int-Wert auf 32bit-Systemen -2147483648 bis + 2147483647 (die 32Bit beziehen sich auf die WORD-Größe der CPU. Und die Normale WORD - Größe von Pentium, Athlon und PowerPC - Prozessoren beträgt heute 32Bit)
Damit gibt es auf solchen Systemen keinen Unterschied der Größe des Datentypes int und des Datentypes long.

Hierzu ein kurzer Überblick über den Datentypen int und seine Wertgrößen :

System Name Größe Wertebereich Formatzeichen
ANSI C int 2 Bytes -32768...+32767 %d oder %i
IBM PC MS-DOS und Win3.1 int 2 Bytes -32768...+32767 %d oder %i
Macintosh Metrowerks CW int 4 Bytes -2147483648 bis + 2147483647 %d oder %i
Win98/2000/NT int 4 Bytes -2147483648 bis + 2147483647 %d oder %i
Linux int 4 Bytes -2147483648 bis + 2147483647 %d oder %i

Den Wertebereich aller Datentypen finden sie in der Headerdatei <limits.h>
Folgendes Beispiel zeigt welchen Wertebereich der Datentyp int bei Ihrem System besitzt...

/*Download:size_int.c*/
#include <stdio.h>
#include <limits.h>

int main()
{
printf("Die Grösse eines \"int\" auf Ihrem System : %d Bytes\n" ,sizeof(int));
printf("Der Wertebereich von %d bis %d\n",INT_MIN,INT_MAX);
return 0;
}

Die Ausgabe sieht bei mir dann folgendermaßen aus...

Die Grösse eines "int" auf Ihrem System : 4 Bytes
Der Wertebereich von -2147483648 bis 2147483647


Was ist ein int ?

"int" heißt soviel wie Integer und ist ein Datentyp für "ganze" Zahlen wie z.B. 33,44,-345,4...
Mit "int" können ganze Zahlen im Wertbereich von mindestens -32768 und +32767 dargestellt werden. Mehr dazu haben sie eben gelesen.
Dazu erst mal wieder ein Programm...

/*Download:integer.c*/
#include <stdio.h>

int main()
{
int a;
int b;
int c;
a=5;
b=100;
c=12345;
printf("Wert von int a=%d ,b=%d, c=%d\n",a,b,c);
return 0;
}

Nun wieder die Erklärung dazu. Hier werden drei int-Variablen mit den Namen a,b und c deklariert. Die Auswahl der Namen bleibt dabei Ihnen überlassen, aber empfehle ich Ihnen Aussagekräftige Namen zu verwenden, damit sie später bei größeren Programmen den Überblick behalten. Dann bekommt a den Wert 5, b den Wert 100 und c den Wert 12345 zugewiesen.

Die Zuweisung eines Wertes wird, Initialisieren einer Variable, genannt.
Den Wert einer Variablen übergeben sie mit dem = - Operator. Folgende Schreibweisen sind dabei erlaubt...

int wert = 5; /*wert=5*/
int wert1 = 10, wert2 = 20; /*wert1=10,wert2=20*/
int wert1, wert2=33; /*wert1=nicht initialisiert,wert2=33*/

int wert1;
int wert2=wert1=10; /*wert1=10, wert2=10*/


Nun kommen wir zur Erklärung der Ausgabe "printf". Also legen wir los : printf("Der Wert von int a= <- bis hierhin nichts neues-%d <- das "%"-Prozentzeichen ist ein >Formatzeichen. Der Compiler schaut jetzt nach um was für ein Format es sich handelt. Bei uns hier ist es das d (für Dezimal). Man kann auch das Formatzeichen %i anstatt %d benutzen. Für manche ist es dann leichter zu Verstehen da das i für Interger steht. Nun weiß der Compiler das er hier eine Ganzahl(int) ausgeben muss. Nun sehen wir mal ans Ende des Hochkommata. Da steht jetzt hinter dem Komma das a. Nun gibt der Compiler den Wert von int a dort wo das Formatzeichen %d steht aus. Genauso läuft es mit den anderen beiden int Werten für b und c ab.

Hier der Programmverlauf bildlich...

int


Das Programm lässt sich auch noch anders schreiben:

/*Download:integer2.c*/
#include <stdio.h>

int main()
{
int a=5;
int b=100, c=12345;
printf("Wert von int a=%d ,b=%d, c=%d\n",a,b,c);
return 0;
}

Wie sie sehen kann man die Wertzuweisung schon direkt bei der Definition vornehmen oder alle Werte in einer Zeile definieren wie bei den beiden Werten int b und c geschehen. Die Werte müssen aber mit einem Komma getrennt werden.

Wenn sie eine Variable nicht mit einem Wert Initialisieren ist die Ausgabe des Wertes undefiniert. Das heißt es ist nicht vorhersehbar welcher Wert ausgegeben wird. Wie z.B. bei diesem Programm.....

/*Download:undef.c*/
#include <stdio.h>

int main()
{
int wert;
printf("Der Wert ist %d (undefinierter Wert)\n",wert);
return 0;
}

Differenzen zwischen C und C++
C++ ist eine Erweiterte Sprache von C und daher ist so manches was in C++ erlaubt ist, logischweise in C nicht erlaubt. In C müssen sie die Deklaration der Variablen, zu Beginn eines Anweisungsblockes schreiben, was nicht auf C++ zutrifft. Sehen sie sich hierzu folgenden Kommentierten Quellcode an...

/*Download:cvcpp.c*/
#include <stdio.h>

int main()
{
printf("Hallo Welt\n");
int i; /*Fehler in C, Ok in C++*/
scanf("%d",&i);
for(int x=0; x<i; x++) /*Fehler in C, Ok in C++*/
{
int x=2; /*Ok da am Anfang von Anweisungsblock*/
printf("%d*%d=%d\n",x,i,x*i);
}
return 0;
}

Aufgabe 1:
Versuchen sie herauszufinden was dieses Programm für Werte ausgibt?

/*Download:intauf.c*/
#include <stdio.h>

int main()
{
int a=-4294967295, b=2147483648 ,c=-2147483649;
printf("Der Wert von int a=%d ,b=%d, c=%d\n",a,b,c);
return 0;
}



Aufgabe 2:
In diesem Programm sind Fehler enthalten. Bringen sie diese Programm zu laufen.


include <stdio.h>

int Main ()
{
int alter=25
int x=20;y=10;
print("Ich bin %q Jahre alt",alter);
printf("\nDer Wert von x=%d und y=%d",x y);
return 0;
}

Tipp: Es sind 7 Fehler vorhanden. Hier gehts zu den Lösungen.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf