sizeof-Operator gibt 4 für (char + kurz) [duplizieren] zurück

7

Gegeben dieses Code-Snippet:

%Vor%

Warum ist sizeof(c + i) == 4 ?

    
Jeshwanth Kumar N K 19.07.2013, 10:06
quelle

3 Antworten

17

c + i ist ein Integer-Ausdruck (Ganzzahlpromotion!), sodass sizeof() sizeof(int)

zurückgibt     
Ingo Leonhardt 19.07.2013, 10:08
quelle
4
  

Integer-Typen, die kleiner als int sind, werden bei einer Operation hochgestuft   auf ihnen durchgeführt. Wenn alle Werte des Originaltyps sein können   dargestellt als int, wird der Wert des kleineren Typs in konvertiert   ein int; Andernfalls wird es in einen unsigned int konvertiert.

Integer-Werbeaktionen erfordern die Heraufstufung jeder Variablen (c und i) in die int-Größe.

%Vor%     
Parag Bafna 19.07.2013 10:20
quelle
3

Das C verwendet int für alle ganzzahligen Berechnungen, wenn nicht anders angegeben. Auf Ihrer Plattform ist int eindeutig 32 Bit lang, daher gibt sizeof 4 zurück. Wenn Ihr Compiler 64-Bit-Ganzzahlen verwendet, wäre es 8 .

    
Jan Spurny 19.07.2013 10:10
quelle

Tags und Links