|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
||||||
Численный аналог char02.12.2015, 10:51. Показов 3644. Ответов 28
Метки нет (Все метки)
То есть выделяемая память та же, но использовать его можно без преобразования, как int допустим.
пример:
0
|
||||||
| 02.12.2015, 10:51 | |
|
Ответы с готовыми решениями:
28
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||
| 02.12.2015, 17:09 | |||||
printf явно формат надо указывать, а operator<< имеет перегрузки для разных типов (какая будет вызвана определяет уже компилятор, а не пользователь на основании формата), хочешь выводить как число, будь любезен приведи к нужному типу, чтобы была выбрана правильная перегрузка.Вполне. Можно считать это то же самое, что сделать явный си-каст к int'у. va_arg, va_list и т.п.
0
|
|||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 02.12.2015, 17:14 | |
|
Tulosba, т. е. это просто побочный эффект внутренней совместимости форматов? Это "переносимо"? В стандарте такое поведение оговорено?
И всё таки зачем нужен %hhd, если char и так работает с %d?
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||||
| 02.12.2015, 17:26 | |||||||||
|
http://www.cplusplus.com/reference/cstdio/printf/
%hhd будет интерпретировать аргумент как signed char, т.е. может быть разница в выводе для целого аргумента. Пример:
0
|
|||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 02.12.2015, 17:47 | |
|
Это мне понятно, что int обрезается до char. А вот на основании чего char расширяется до int?
И ещё, если уже заговорили о printf(): она не различает float. Тем не менее float выводится с %f для double. Как это получается? Они ведь разного размера - 4/8?
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||
| 02.12.2015, 19:01 | ||||||
|
5.2.2/7
http://en.cppreference.com/w/c... _arguments Добавлено через 3 минуты
1
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|||||||||||||||||||
| 02.12.2015, 19:14 | |||||||||||||||||||
|
nmcf, printf парсит строку формата и на основании ее получается набор разнотипных параметров, которые он ожидает увидеть после строки формата.
Далее этот набор извлекается через всякие va_arg и тут главное (но не достаточное), как мне кажется, соблюсти размеры аргумента. Т.е. скажем, я указал в формате %lld (long long int), а передал 42 (int), в итоге получил UB:
В данном примере мы вышли за границы int'а (4 байта), и считали 8 байт (long long int), т.е. по сути, мусор. Возможна и обратная ситуация (но тоже приводящая к UB):
Кстати, мой пример в предыдущем сообщении тоже приводит к UB. Теперь, возвращаемся к char-int. В Стандарте C99 про форматы printf сказано (7.19.6.1/8):
d - выводит число (полученное из char, преобразованного в int), c - выводит символ (полученный из char, преобразованного в int, интерпретированного обратно как char).
1
|
|||||||||||||||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 02.12.2015, 20:30 | |
|
DrOffset, т. е. по-русски говоря компилятор принудительно конвертирует float в double в функциях с многоточием?
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
| 02.12.2015, 20:41 | |
|
nmcf, только для аргументов, попадающих в это многоточие. Т.к. может быть и явный аргумент, т.е. до многоточия.
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 02.12.2015, 20:42 | |
|
Tulosba, я это и имел в виду.
0
|
|
| 02.12.2015, 20:42 | |
|
char* to char или (char* запись в файл) Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
Численный оптимизатор Численный интеграл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|