преобразование типа char в long int

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
AxisPod
Родился
Сообщения: 8
Зарегистрирован: Пн мар 01, 2021 05:19:23

Re: преобразование типа char в long int

Сообщение AxisPod »

Чем не нравится 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)
И работай с этим как с отдельными символами, так и целиком с числом. Инкрементишь число, читаешь символы. Поля структуры ссылаются на один кусок памяти.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: преобразование типа char в long int

Сообщение BOB51 »

Некоторые размышления с точки зрения адуринки...
https://radiokot.ru/forum/viewtopic.php ... 6#p3991986
:roll:
Реклама
Аватара пользователя
KorbenDallas
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Re: преобразование типа char в long int

Сообщение KorbenDallas »

[uquote="Chip_step",url="/forum/viewtopic.php?p=3990203#p3990203"]Всем привет. Скажите как преобразовать тип данных char в long int?

вот пример:

Код: Выделить всё

#include <tiny2313a.h>
volatile char counter=0;


суть такова: переменную "counter" можно было бы инкрементировать до 200000.[/uquote]

1. Открыть исходный текст программы в текстовом редакторе.
2. Исправить тип в объявлении переменной с `char` на `long int`.
3. Заодно исправить грубую ошибку с типом возвращаемого значения функции `main`: не `void`, а `int`.
4. Сохранить исходный текст программы
5. Перекомпилировать программу
6. Готово!

Никакого другого способа, чтобы "можно было бы инкрементировать до 200000", нет и быть не может.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: преобразование типа char в long int

Сообщение Dimon456 »

KorbenDallas писал(а):3. Заодно исправить грубую ошибку с типом возвращаемого значения функции `main`: не `void`, а `int`.
Ух ты, как на летел то, а не что, если в cvavr пишется именно void main(void)?
KorbenDallas писал(а):6. Готово!
А что, если есть какая-то функция, которая принимает тип char, знаковый тип, а теперь попробуйте затрамбовать ваш long int в эту функцию и желательно за один заход, учитывая знак (условие, функцию нельзя переписывать)?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
KorbenDallas
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Re: преобразование типа char в long int

Сообщение KorbenDallas »

[uquote="Dimon456",url="/forum/viewtopic.php?p=3999128#p3999128"]а не что, если в cvavr пишется именно void main(void)?[/uquote]

Кем "пишется"? В cvavr, как и везде, пишется именно `int main`? А то, что какой-то компилятор традиционно закрывает глаза на `void main` не является поводом этим пользоваться. Зачем?

[uquote="Dimon456",url="/forum/viewtopic.php?p=3999128#p3999128"]А что, если есть какая-то функция...[/uquote]

Всякие "а что если" к данному вопросу никакого отношения не имеют.

[uquote="Dimon456",url="/forum/viewtopic.php?p=3999128#p3999128"]которая принимает тип char, знаковый тип, а теперь попробуйте затрамбовать ваш long int в эту функцию и желательно за один заход,[/uquote]

Никто даже и пытаться не будет заниматься подобной бессмыслицей. Если функция принимает тип char, то она принимает тип char. Ни о чем другой речи и быть не может. (По-прежнему, однако, не ясно, что это делает в этой теме и какое отношение имеет к заданному вопросу.)
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: преобразование типа char в long int

Сообщение ARV »

KorbenDallas писал(а):Если функция принимает тип char, то она принимает тип char. Ни о чем другой речи и быть не может. (По-прежнему, однако, не ясно, что это делает в этой теме и какое отношение имеет к заданному вопросу.)
вам пытались указать на то, что изменение типа переменной недостаточно, потому как переменная нового типа, переданная в неизмененную функцию (вы ведь не предлагали изменить исходник где-то еще), не даст никакого видимого результата - в функцию, которая ждет char даже из переменной long int больше 255 передать не выйдет.

короче, ваш совет - в топку: он хоть и простой, как три копейки, но и стоит не больше.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
KorbenDallas
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Re: преобразование типа char в long int

Сообщение KorbenDallas »

[uquote="ARV",url="/forum/viewtopic.php?p=3999200#p3999200"]вам пытались указать на то, что изменение типа переменной недостаточно, потому как переменная нового типа, переданная в неизмененную функцию (вы ведь не предлагали изменить исходник где-то еще), не даст никакого видимого результата - в функцию, которая ждет char даже из переменной long int больше 255 передать не выйдет.[/uquote]

Нет, конечно. Не нужно выдумывать сущности, если единственной их целью является раздувание флуда в форуме. Внимательно читайте вопрос и старайтесь не выходить за рамки топика. Никакая "передача в функцию" в этой теме не участвует и никого тут не интересует. Тот кто "пытался указать" - он ошибся и ляпнул не подумав. Он уже и сам понял.

[uquote="ARV",url="/forum/viewtopic.php?p=3999200#p3999200"]короче, ваш совет - в топку: он хоть и простой, как три копейки, но и стоит не больше.[/uquote]

Мой "совет" - единственно возможный ответ на поставленный вопрос, даже (!) если принимать во внимание некие выдуманные "функции". Поэтому не "в топку", а совсем наоброт: своим ответом выше я тему исчерпал и закрыл. Никаких других вариантов тут не будет.

Что, собственно, было понятно с самого начала, до моего появления в теме, но вот умудрились же на ровном месте нафлудить на две страницы белиберды...
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: преобразование типа char в long int

Сообщение ARV »

KorbenDallas писал(а):Мой "совет" - единственно возможный ответ на поставленный вопрос, даже (!) если принимать во внимание некие выдуманные "функции".
вас совет из категории "не перебегай ЗДЕСЬ через дорогу - это опасно", хотя на самом деле правильный совет слово "здесь" должен исключить. а так да, в конкретно этом случае по-вашему сделать можно. но наивно полагать, что это чему-либо кого-либо может научить, т.е. исключить повторение проблемы в будущем.

и, кстати, если принимать во внимание некие выдуманные функции, то ваш совет красиво демонстрирует свою фтопочную сущность:

Код: Выделить всё

char var;
void foo(char x){
  printf("%d", x);
}

int main(void){
  var = 1;
  while(var++) foo(var);
}
по вашему совету изменение типа переменной var никак не изменит выводимые числа - они как были в пределах 0-255, так и останутся, хотя изменит их количество . но я мог бы этого и не говорить...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
KorbenDallas
Встал на лапы
Сообщения: 93
Зарегистрирован: Пн окт 31, 2016 06:23:19

Re: преобразование типа char в long int

Сообщение KorbenDallas »

:shock:

Мне кажется, народ, что я разговариваю с софтверным ботом: он просто непрерывно дылдонит одно и то же по кругу из сообщения в сообщение, не обращая ни на что внимания.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: преобразование типа char в long int

Сообщение ARV »

KorbenDallas писал(а):непрерывно дылдонит одно и то же по кругу из сообщения в сообщение
потому что истина не должна меняться от сообщения к сообщению :) если кому-то она не видна сразу, приходится повторять до просветления :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»