Заголовок сообщения: Re: преобразование типа char в long int
Добавлено: Ср мар 03, 2021 11:33:55
Родился
Зарегистрирован: Пн мар 01, 2021 05:19:23 Сообщений: 8
Рейтинг сообщения:0
Чем не нравится long int? А вообще если нужны чары, то делай просто:
Код:
#pragma pack(push, 1) union char_to_long { struct { char c1; char c2; char c3; char c4; } chars; long int value; } #pragma pack(pop)
И работай с этим как с отдельными символами, так и целиком с числом. Инкрементишь число, читаешь символы. Поля структуры ссылаются на один кусок памяти.
Всем привет. Скажите как преобразовать тип данных char в long int?
вот пример:
Код:
#include <tiny2313a.h> volatile char counter=0;
суть такова: переменную "counter" можно было бы инкрементировать до 200000.
1. Открыть исходный текст программы в текстовом редакторе. 2. Исправить тип в объявлении переменной с `char` на `long int`. 3. Заодно исправить грубую ошибку с типом возвращаемого значения функции `main`: не `void`, а `int`. 4. Сохранить исходный текст программы 5. Перекомпилировать программу 6. Готово!
Никакого другого способа, чтобы "можно было бы инкрементировать до 200000", нет и быть не может.
3. Заодно исправить грубую ошибку с типом возвращаемого значения функции `main`: не `void`, а `int`.
Ух ты, как на летел то, а не что, если в cvavr пишется именно void main(void)?
KorbenDallas писал(а):
6. Готово!
А что, если есть какая-то функция, которая принимает тип char, знаковый тип, а теперь попробуйте затрамбовать ваш long int в эту функцию и желательно за один заход, учитывая знак (условие, функцию нельзя переписывать)?
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
а не что, если в cvavr пишется именно void main(void)?
Кем "пишется"? В cvavr, как и везде, пишется именно `int main`? А то, что какой-то компилятор традиционно закрывает глаза на `void main` не является поводом этим пользоваться. Зачем?
которая принимает тип char, знаковый тип, а теперь попробуйте затрамбовать ваш long int в эту функцию и желательно за один заход,
Никто даже и пытаться не будет заниматься подобной бессмыслицей. Если функция принимает тип char, то она принимает тип char. Ни о чем другой речи и быть не может. (По-прежнему, однако, не ясно, что это делает в этой теме и какое отношение имеет к заданному вопросу.)
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Если функция принимает тип char, то она принимает тип char. Ни о чем другой речи и быть не может. (По-прежнему, однако, не ясно, что это делает в этой теме и какое отношение имеет к заданному вопросу.)
вам пытались указать на то, что изменение типа переменной недостаточно, потому как переменная нового типа, переданная в неизмененную функцию (вы ведь не предлагали изменить исходник где-то еще), не даст никакого видимого результата - в функцию, которая ждет char даже из переменной long int больше 255 передать не выйдет.
короче, ваш совет - в топку: он хоть и простой, как три копейки, но и стоит не больше.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
вам пытались указать на то, что изменение типа переменной недостаточно, потому как переменная нового типа, переданная в неизмененную функцию (вы ведь не предлагали изменить исходник где-то еще), не даст никакого видимого результата - в функцию, которая ждет char даже из переменной long int больше 255 передать не выйдет.
Нет, конечно. Не нужно выдумывать сущности, если единственной их целью является раздувание флуда в форуме. Внимательно читайте вопрос и старайтесь не выходить за рамки топика. Никакая "передача в функцию" в этой теме не участвует и никого тут не интересует. Тот кто "пытался указать" - он ошибся и ляпнул не подумав. Он уже и сам понял.
короче, ваш совет - в топку: он хоть и простой, как три копейки, но и стоит не больше.
Мой "совет" - единственно возможный ответ на поставленный вопрос, даже (!) если принимать во внимание некие выдуманные "функции". Поэтому не "в топку", а совсем наоброт: своим ответом выше я тему исчерпал и закрыл. Никаких других вариантов тут не будет.
Что, собственно, было понятно с самого начала, до моего появления в теме, но вот умудрились же на ровном месте нафлудить на две страницы белиберды...
Мой "совет" - единственно возможный ответ на поставленный вопрос, даже (!) если принимать во внимание некие выдуманные "функции".
вас совет из категории "не перебегай ЗДЕСЬ через дорогу - это опасно", хотя на самом деле правильный совет слово "здесь" должен исключить. а так да, в конкретно этом случае по-вашему сделать можно. но наивно полагать, что это чему-либо кого-либо может научить, т.е. исключить повторение проблемы в будущем.
и, кстати, если принимать во внимание некие выдуманные функции, то ваш совет красиво демонстрирует свою фтопочную сущность:
Код:
char var; void foo(char x){ printf("%d", x); }
int main(void){ var = 1; while(var++) foo(var); }
по вашему совету изменение типа переменной var никак не изменит выводимые числа - они как были в пределах 0-255, так и останутся, хотя изменит их количество . но я мог бы этого и не говорить...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Мне кажется, народ, что я разговариваю с софтверным ботом: он просто непрерывно дылдонит одно и то же по кругу из сообщения в сообщение, не обращая ни на что внимания.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения