C новая строка после переменной - PullRequest
0 голосов
/ 30 августа 2018

Это снова я, программист noob.

В C я пытаюсь сделать \ n после переменной.

Вот мой исходный код:

int main() {
    int xD = 21;
    printf(xD\n);
}

и я получаю это при компиляции:

new 1.c: In function ‘main’:
new 1.c:5:11: error: stray ‘\’ in program
printf(xd\n);
       ^
new 1.c:5:12: error: expected ‘)’ before ‘n’
printf(xd\n);
        ^
new 1.c:5:9: warning: format not a string literal and no format 
arguments [-Wformat-security]
printf(xd\n);
       ^~

Может ли кто-нибудь мне помочь?

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Здесь есть две проблемы: 1. printf() ожидает, что первым аргументом будет строка const char*, указывающая формат. 2. Компилятор не знает, как интерпретировать \n вне строки (кавычки). Это то, что мешает компиляции.

Даже если вы удалили \n, попытка printf(xd) просит printf() рассматривать xd (целое число) как строку формата - и это не сработает для вас. Фактически, C, вероятно, попытается выполнить неявное приведение от xd до const char*. Вы просите printf() интерпретировать "массив символов, расположенный по адресу 21", как строку формата (и там почти наверняка нет строки формата).

То, что вы действительно хотели сказать, было:

printf("%d\n", xd);
0 голосов
/ 30 августа 2018

Функция printf требует параметра формата для определения типа переменной xD. Поскольку xD является целым числом, "% d" требуется в качестве параметра формата.

printf("%d\n", xD);
0 голосов
/ 30 августа 2018

Вы пропустили строку для форматирования:

printf("%d\n",xD);
...