2016-12-03 1 views
0

Wie stellt sich heraus, dass der Ausgang Morgen ist?Hinzufügen einer Ganzzahl zu einer Zeichenfolge in C, wie das Ergebnis zu verstehen?

#include<stdio.h> 
void main() 
{ 
    printf(5+"Good Morning"); 
    return 0; 
} 

output is Morning 
+3

'void main()' ist falsch; es sollte 'int main (void)' sein. Sie sollten eine Warnung bekommen haben, wahrscheinlich auf 'void main()', und auch auf 'return 0;'. Ignoriere Compilerwarnungen nicht. –

+1

so viele Fragen konnten vermieden werden, wenn Menschen die Warnungen tatsächlich _read _ und _nahmen_ (auch wenn es nicht der Punkt hier ist, kann OP_next_ Problem sein. Und Antworter sollten immer versuchen, den OP-Code zu kompilieren, und 454 Warnhinweisen ablehnen erscheinen, einer von ihnen zeigt auf das Problem :) –

Antwort

6

Zeigerarithmetik: added Sie 5 an die char Arrayposition, die 5 ersten Zeichen übersprungen, d.h. Good und Raum.

Es ist legal, solange Sie in diesem Fall nicht die Größe der Zeichenfolge überschreiten, haben Sie undefiniertes Verhalten

+0

So ist es passiert, ohne auch die Char-Array zu deklarieren und zu initialisieren? –

+1

Sie haben _and_ initialisiert Ihre Char-Array: Es ist ein _literal_. –

+0

@AnjaniKumar deklariert implizit ein temporäres, unbenanntes Zeichen-Array – artm

Verwandte Themen