Можем ли мы иметь оператор «+» внутри printf ()? - PullRequest
0 голосов
/ 07 января 2020
void main(){
    char str1[10] = "Hello", str2[10] = "World";
    printf(5 + "Good Morning\n");
}

Это выводится как «Утро», и я не понимаю почему, заранее спасибо.

1 Ответ

5 голосов
/ 07 января 2020

Массив "Good Morning\n" (тип char[14]) в контексте добавления к целому числу преобразуется в указатель на свой первый элемент ('G').

Этот указатель увеличивается на 5 и так указывает на 'M'.

    G o o d _ M o r n i n g \n
    0 1 2 3 4 5 6 ...

printf() получает строку "Morning\n" в виде строки формата . Поскольку у него нет %, все в порядке и напечатано напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...