Я новичок в C. Почему эта программа печатает знак %
?
Код такой:
#include <stdio.h>
main()
{
printf("%");
getch();
}
Я новичок в C. Почему эта программа печатает знак %
?
Код такой:
#include <stdio.h>
main()
{
printf("%");
getch();
}
Ваша проблема в том, что вам нужно изменить:
printf("%");
to
printf("%%");
Или вы можете использовать код ASCII и написать:
printf("%c", 37);
:)
printf("%c", 37);
не переносится.
- person ; 21.07.2013
printf("%%");
ответ, но не используя ascii. Вы прокомментировали здесь, когда я редактировал этот ответ. :)
- person Grijesh Chauhan; 21.07.2013
'%'
вместо 37
?
- person Diti; 22.03.2014
В этой теме нет объяснения, зачем печатать знак процента. Необходимо ввести %%
, а не, например, escape-символ с процентом - \%
.
Из списка часто задаваемых вопросов comp.lang.c · Вопрос 12.6:
Причина, по которой печатать знаки% с помощью printf сложно, заключается в том, что% по сути является escape-символом printf. Каждый раз, когда printf видит%, он ожидает, что за ним будет следовать символ, указывающий, что делать дальше. Последовательность из двух символов %% предназначена для печати одного%.
Чтобы понять, почему% не может работать, помните, что обратная косая черта \ является escape-символом компилятора и управляет тем, как компилятор интерпретирует символы исходного кода во время компиляции. В этом случае, однако, мы хотим контролировать, как printf интерпретирует свою строку формата во время выполнения. Что касается компилятора, escape-последовательность% не определена и, вероятно, приводит к единственному символу%. Маловероятно, что и \, и% дойдут до printf, даже если printf будут специально обрабатывать \.
Итак, причина, по которой нужно набрать printf("%%");
, чтобы напечатать один %
, заключается в том, что определено в функции printf. %
- это escape-символ printf и \
компилятора.
Используйте 1_. На странице руководства описывается это требование:
%
Написано "%". Никакой аргумент не преобразуется. Полная спецификация преобразования - «%%
».
Попробуйте распечатать таким способом
printf("%%");
'//
) является символьной константой для/
, и применил это. Разве наprintf
нет справочной страницы? - person TheBlueCat   schedule 22.07.2013'\\'
- символьная константа для\
? Символьная константа для/
-'/'
. - person This isn't my real name   schedule 22.07.2013