Как выход получается утром.Добавление целого числа в строку в C, как понять результат?
#include<stdio.h>
void main()
{
printf(5+"Good Morning");
return 0;
}
output is Morning
Как выход получается утром.Добавление целого числа в строку в C, как понять результат?
#include<stdio.h>
void main()
{
printf(5+"Good Morning");
return 0;
}
output is Morning
Указатель арифметика: вы добавили 5 в положение char
массива, пропуская 5 первых символов, т.е. Good
и пространство.
Это законно до тех пор, пока вы не превышают размер строки, в этом случае, у вас есть неопределенное поведение
Значит, это произошло даже без объявления и инициализации массива символов? –
вы объявили _and_ инициализировали свой массив символов: это _literal_. –
@AnjaniKumar вы неявно объявили временный, неназванный массив символов – artm
'недействительным основной()' неправильно; это должно быть 'int main (void)'. Вы должны были получить предупреждение, возможно, на 'void main()', а также на 'return 0;'. Не игнорируйте предупреждения компилятора. –
, так много вопросов можно было бы избежать, если бы люди на самом деле _read_ предупреждали и принимали меры (даже если это не проблема здесь, это может быть проблема OP _next_. И ответчики должны всегда пытаться скомпилировать фрагмент кода OP и downvote, если 453 предупреждения появляются, один из них указывает на проблему :) –