# C++ Grundlagen float,int,char?



## vpam80 (23. Oktober 2008)

Hallo zusammen,

wäre von euch jemand so freundlich mir die Begriffe 
*float*,*int *und *char *etwas genauer zu erläutern.

Im voraus schonmal vielen Dank




Gruß vpam80


----------



## BillaBong (23. Oktober 2008)

char benutzt man um zeichen einer variablen zuzuweisen

bsp.: *char* test[11] = "elf Zeichen!";

int benutzt man um zahlen einer variablen zuzuweisen

bsp.: *int* test = 22;

float benutzt man um Gleitkommazahlen einer variablen zuzuweisen

bsp.: *float* test = 3,1415926535;


----------



## deepthroat (23. Oktober 2008)

BillaBong hat gesagt.:


> char benutzt man um zeichen einer variablen zuzuweisen


Erstmal ist char nur ein einzelnes Zeichen bzw. eigentlich ein Zahlenwert von -128 bis 127 oder 0 bis 255 (je nach System). Jedem Zahlenwert ist dabei ein bestimmtes Zeichen zugeordnet.


BillaBong hat gesagt.:


> bsp.: *char* test[11] = "elf Zeichen!";


Das Beispiel ist schlecht. Die String-Variable *test* kann 11 Zeichen speichern, du weist allerdings einen String mit 13 Zeichen zu.


BillaBong hat gesagt.:


> bsp.: *float* test = 3,1415926535;


Du weist der Variablen test den Wert 1415926535 zu. In C/C++ benutzt man die englische Schreibweise für rationale Zahlen mit dem Punkt als Dezimaltrennzeichen. Das Komma ist der Sequenzoperator. Es müßte eigentlich lauten:

```
float test = 3.1415926535;
```
Gruß

PS: Etwas mehr Sorgfalt bei deinen Antworten wäre schön. Bitte halte dich an die Netiquette, Punkt 15 - Groß/Kleinschreibung. Danke.


----------



## vfl_freak (24. Oktober 2008)

Moin deepthroat,



> Erstmal ist char nur ein einzelnes Zeichen bzw. eigentlich ein Zahlenwert von -128 bis 127 oder 0 bis 255 (je nach System)



Jetzt muss ich mal dumm nachfragen: was heißt "je nach System"?
Das ist doch eher die Frage, ob "signed" oder "unsigned" deklariert, oder irre ich mich da?

Danke und Gruß
Klaus


----------



## deepthroat (24. Oktober 2008)

Moin.





vfl_freak hat gesagt.:


> Jetzt muss ich mal dumm nachfragen: was heißt "je nach System"?
> Das ist doch eher die Frage, ob "signed" oder "unsigned" deklariert, oder irre ich mich da?


Du irrst dich. 

Es gibt (im Gegensatz zu int, short und long) 3 unterschiedliche char Typen. Der Typ char ist entweder als singed char oder als unsigned char implementiert (je nach System). Es gilt also nicht immer wie z.B. bei int: int == signed int.

Das die char Typen untereinander verschieden sind, kann man in C++ leicht nachvollziehen:
	
	
	



```
void f(unsigned char);
void f(signed char);

char c;
f(c); // <- Compilerfehler: der Funktionsaufruf ist mehrdeutig
```
D.h. ein char entspricht nicht einfach einem unsigned char oder signed char. Man muss hier explizit casten um anzugeben welche Funktion aufgerufen werden soll.

Gruß


----------



## vfl_freak (24. Oktober 2008)

Hallo,


> Es gibt (im Gegensatz zu int, short und long) 3 unterschiedliche char Typen. Der Typ char ist entweder als singed char oder als unsigned char implementiert (je nach System)



Ääh - jetzt bin ich endgültig verwirrt :suspekt:  _*DREI*_ unterschiedliche Typen?

Habe zwar eben in meiner Windef.h etliche typedefs hierzu gefunden, aber "char" kann doch eigentlich nur "signed" oder "unsigned" sein,  also wie Du schon schriebst im Wertebereich von <-128 bis 127> oder <0 bis 255> ........ 

tschüss
Klaus


----------



## deepthroat (24. Oktober 2008)

vfl_freak hat gesagt.:


> Hallo,
> 
> 
> Ääh - jetzt bin ich endgültig verwirrt :suspekt:  _*DREI*_ unterschiedliche Typen?
> ...


char ist kein typedef. Der Typ char ist ein eingebauter eigener Typ, wie auch unsigned char und signed char.

Für int Typen gilt: int == signed int != unsigned int. D.h. int und signed int sind immer völlig äquivalent.

Für die char Typen gilt. char != signed char != unsigned char

Je nach System kann man natürlich in einem char genau die gleichen Werte speichern wie in einem signed char oder unsigned char. Aber es wird vom Compiler zwischen den 3 Typen unterschieden weil es generell keine eindeutige Äquivalenz zwischen den Typen gibt.

Gruß


----------



## vfl_freak (24. Oktober 2008)

Hi,

aha, das war mir so auch neu 

Danke für die ausführlicher Erklärung 

Gruß
Klaus


----------



## rook (24. Oktober 2008)

und das auch nur bei C++... nicht bei C..
meiner meinung nach ein total blödes system


----------



## deepthroat (24. Oktober 2008)

rook hat gesagt.:


> und das auch nur bei C++... nicht bei C..
> meiner meinung nach ein total blödes system


Nein, das gilt für C genauso wie für C++. Nur gibt es da keine Überladung für Funktionen. Wenn man portablen C Code schreiben will, sollte man das allerdings wissen und muss darauf achten was man für einen char Typ verwendet.

Gruß

PS: Bitte halte dich an die Netiquette


----------

