Согласно K & R C раздел 1.6, a char
является типом целого числа. Так зачем нам %c
. И почему мы не можем использовать %d
?Почему% c используется в C?
ответ
Поскольку %d
напечатает числовой код символа char
:
printf("%d", 'a');
печатает 97
(на системе ASCII), в то время как
printf("%c", 'a');
печатает a
.
И не забывайте 'scanf':'% d' читает и преобразует числовые строки, где '% c' читает и преобразует отдельные символы. –
Грубо говоря, %c
печатает ASCII-представление символа. %d
печатает десятичное значение.
За исключением того, что это не ASCII – Pubby
Хотя это целое число, %c
интерпретирует его числовое значение как значение символа для отображения. Например, для символа a
:
Если вы использовали %d
вы получите целое число, например, 97, тем внутреннего представления о характере a
против
с использованием %c
для отображения символа 'a
' сам (при использовании ASCII)
Т.е., это вопрос Внутреннее представление vs для внешних целей (например, printf
)
Если вы используете %c
, вы будете печатать (или сканировать) символ или символ. Если вы используете %d
, вы будете печатать (или сканировать) целое число.
printf("%d", 0x70);
Как машина узнает, что вы хотите вывести символ, а не его эквивалентное значение ASCII?
% d think char is 32bit и печатает его как целое число, но% c конвертирует значение int char в символ ascii, а затем печатает его.
%d
используется для печати decimal(integer)
номер, в то время как %c
используется для печати character
.Если вы пытаетесь напечатать символ с форматом %d
компьютер распечатывает ASCII
код символа.
- 1. C Почему переменная не используется?
- 2. Когда и почему longjmp используется в C++?
- 3. Почему «@» используется перед строками в Objective-C?
- 4. почему @class используется в Objective-C
- 5. Почему язык C все еще используется?
- 6. Почему используется набор вместо карты? C++
- 7. Почему переменная скорость используется без инициализации? C++
- 8. Как стек используется в C++
- 9. C++ strcpy (Struct.Property, "VALUE") Используется в C#?
- 10. Почему (char *) используется в функции write() в C++?
- 11. C#. App.exe.config не используется
- 12. Проверьте папку используется в C#
- 13. C++: Какой конструктор используется?
- 14. Почему в этом примере кода C используется указатель на указатель?
- 15. XobotOS: Почему в тесте Binary tree C# используется структура?
- 16. C++ Почему массив символов используется в учебниках о строках?
- 17. Почему SWF-файл не используется в C# при использовании AxShockwaveFlash
- 18. Почему используется "vector.at (x)" лучше, чем "вектор [x]" в C++?
- 19. Почему знак «./» используется для компиляции? это соглашение в C++?
- 20. C++ Предотвращение CMD команда используется
- 21. Как найти, где память используется в C#?
- 22. Почему (C++) * (C++) неопределенное поведение в C++?
- 23. C++ Закрыть окно не используется
- 24. «Type» используется как переменная (C#)
- 25. C++ CPU не используется полностью
- 26. C# Singleton - Используется несколькими клиентами
- 27. C++ используется вместо константного значения
- 28. Файл уже используется FileAccess C#
- 29. Почему по умолчанию используется широкоформатный поток данных на C++?
- 30. Почему WNDCLASS (Windows-C) настроен и используется так?
char - это 8-разрядный интеллект –
@MaziarBouali Не обязательно. – Pubby
'printf' должен знать размер аргумента, чтобы напечатать его (чтобы его соответствующим образом произнести). У 'char' есть размер 1, у' int' есть, по крайней мере, на большинстве машин больше. Кроме того, при использовании '% c' вы хотите напечатать символ, а не номер. На языке 'D' вы всегда будете использовать'% s' и пусть компилятор беспокоится о типах. – Matej