Ответ 1
Ваша проблема в том, что вам нужно изменить:
printf("%");
to
printf("%%");
Или вы можете использовать код ASCII и написать:
printf("%c", 37);
:)
Я новичок в C, и мне было интересно, почему эта программа не печатает знак%?
Код:
#include<stdio.h>
main()
{
printf("%");
getch();
}
Ваша проблема в том, что вам нужно изменить:
printf("%");
to
printf("%%");
Или вы можете использовать код ASCII и написать:
printf("%c", 37);
:)
В этом разделе нет объяснений, почему для печати знака процента нужно набрать %%
, а не, например, escape-символ с процентом - \%
.
из comp.lang.c Список вопросов · Вопрос 12.6:
Причина, по которой сложно печатать знаки% с printf, состоит в том, что% is в высшей степени принтf пробег знак. Всякий раз, когда printf видит%, это ожидает, что за ним последует персонаж, рассказывающий, что делать дальше. Двухсимвольная последовательность %% определена для печати одного%.
Чтобы понять, почему\%не может работать, помните, что обратная косая черта\является escape-символ компилятора и управляет тем, как интерпретирует компилятор символы исходного кода во время компиляции. В этом случае, однако, мы хотим чтобы контролировать, как printf интерпретирует строку формата во время выполнения. До как компилятор, escape-последовательность\%равна undefined, и вероятно, приводит к одному символу%. Было бы маловероятно, чтобы и\и%, чтобы выполнить печать, даже если printf были подготовлен к обработке\специально.
поэтому причина, по которой нужно печатать printf("%%");
для печати одного%, - это то, что определено в функции printf. % - это escape-символ printf и\компилятора.
Используйте "%%"
. Страница описывает это требование:
%
А '%' написано. Аргумент не преобразуется. Полная спецификация преобразования - "%%
".
Попробуйте распечатать этот путь
printf("%%");