2016-12-03 2 views
0

Как выход получается утром.Добавление целого числа в строку в C, как понять результат?

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

output is Morning 
+3

'недействительным основной()' неправильно; это должно быть 'int main (void)'. Вы должны были получить предупреждение, возможно, на 'void main()', а также на 'return 0;'. Не игнорируйте предупреждения компилятора. –

+1

, так много вопросов можно было бы избежать, если бы люди на самом деле _read_ предупреждали и принимали меры (даже если это не проблема здесь, это может быть проблема OP _next_. И ответчики должны всегда пытаться скомпилировать фрагмент кода OP и downvote, если 453 предупреждения появляются, один из них указывает на проблему :) –

ответ

6

Указатель арифметика: вы добавили 5 в положение char массива, пропуская 5 первых символов, т.е. Good и пространство.

Это законно до тех пор, пока вы не превышают размер строки, в этом случае, у вас есть неопределенное поведение

+0

Значит, это произошло даже без объявления и инициализации массива символов? –

+1

вы объявили _and_ инициализировали свой массив символов: это _literal_. –

+0

@AnjaniKumar вы неявно объявили временный, неназванный массив символов – artm

Смежные вопросы