Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
mpz_init_set_str (mpz_ptr x, const char *str, int base)
base это у нас система счисления. верно ? т.е. : base = 10, и можно использовать символы 0..9 base = 16, и можно использовать символы 16-иричной системы 0..F а если мне нужно закодить например слово MAMA, то чему должно равняться base ? по логике вещей base = 256. да вот незадача.. выводит ошибку вроде
Цитата:
Исключение в операции с плавающей точкой
_________________ RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код @hobbyelectronics
я не понял, нафиг это все надо? gmp - это либа для работы с очень большими числами, например, для криптографии. кодировать этим слова... малость не то применение.
Извините, за "новое слово в языке Си" но возможно ли как нибудь, применение русских букв в CИ, в частности в #define например
Код:
#define Ё 14 #define Ж 16 #define И 18 #define К 20
text [4] = {Ё,Ж,И,К}
Наверное бред, но нужно закодировать кучу массивов содержащих русский текст, и былобы очень удобно "задефинить" все русские буквы, а потом просто собирать массивы русскими буквами
Извините, за "новое слово в языке Си" но возможно ли как нибудь, применение русских букв в CИ, в частности в #define например
Код:
#define Ё 14 #define Ж 16 #define И 18 #define К 20
text [4] = {Ё,Ж,И,К}
Наверное бред, но нужно закодировать кучу массивов содержащих русский текст, и былобы очень удобно "задефинить" все русские буквы, а потом просто собирать массивы русскими буквами
насколько я в курсе, нет компиляторов для AVR, поддерживающих подобные дефайны, хотя по слухам для компьютера MS VC такой финт допускет...
но скажите, зачем вам это?! ведь строка в Си инициализируется самым тривиальным способом:
Код:
char text[] = "ЁЖИК";
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Так я в Си самоучка, учусь не по нотам а на слух, там подслушаю, там подсмотрю))))) про такую возможность объявления переменных не знал. А скажите, как тогда мне лучше объявить массив в котором используются только элементы с 192 по 223, а остальные не нужны (у знаков А-Я код 192-223) ? Спасибо.
зы. какую книгу по Си для микроконтроллеров порекомендуете??
... но скажите, зачем вам это?! ведь строка в Си инициализируется самым тривиальным способом:
Код:
char text[] = "ЁЖИК";
Кстати, если строго, то полным аналогом посимвольной инициаизации со скобками { } будет
Код:
char text[4] = "ЁЖИК";
Код:
char text1[4] = {Ё,Ж,И,К}; // тут 4 можно было и не указывать, всё равно было бы 4 char text2[] = "ЁЖИК"; // тут в массиве будет ограичитель '\0' и будет 5 элементов массива char text3[4] = "ЁЖИК"; // а тут ограничителя не будет, массив размером 4 элемента
Иногда удобно, экономит место.
O-LED писал(а):
А скажите, как тогда мне лучше объявить массив в котором используются только элементы с 192 по 223, а остальные не нужны (у знаков А-Я код 192-223) ?
inline char get_from_array( char ch) { if( ch < start_char || ch > end_char ) return ch; // при уверенности в том, что не передадут «запредельное», эту строку можно и убрать return array[ ch - start_char ];}
Задумчиво, но иначе никак не сэкономить на массиве. Это не паскаль, чтобы границы индекса массива указать. Хотя паскаль тут только строки текста программы сэкономит, в коде лучше не будет.
O-LED писал(а):
зы. какую книгу по Си для микроконтроллеров порекомендуете??
И чернила для 8-го класса. Сначала нужна книжка по языку С, чтобы в голове порядок был. Потом в документации на конкретнй компилятор смотреть его расширения и отклонения от стандарта. Кстати, у тех компьютеров, на которых С рождался, было 64 килобайта адресного пространства, после вычета зоны устройств оставалось максимум 56К под код и данные, а на целевой машине могло оказаться и 8К. atmega64 уже больше имеет, чем тогда было максимум, atmega8-atmega16 имеют столько, сколько тогда было в типичной управляющей машинке.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
char text1[4] = {Ё,Ж,И,К}; // тут 4 можно было и не указывать, всё равно было бы 4 char text2[] = "ЁЖИК"; // тут в массиве будет ограичитель '\0' и будет 5 элементов массива char text3[4] = "ЁЖИК"; // а тут ограничителя не будет, массив размером 4 элемента
Иногда удобно, экономит место.
А Вы проверяли это? А что за компилятор, который позволяет так делать?
По стандарту Си рабочий, в этом примере, только второй массив. В первом нужно символы заключать в одинарные кавычки, а третий ругнётся на размерность. Во все строки, а строка это двойные кавычки, компилятор должен помещать конец строки '\0'.
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19693 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
avreal писал(а):
Кстати, если строго, то полным аналогом посимвольной инициаизации со скобками { } будет
Код:
char text[4] = "ЁЖИК";
А как же символ конца строки '\0'?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
А Вы проверяли это? А что за компилятор, который позволяет так делать? По стандарту Си рабочий, в этом примере, только второй массив. В первом нужно символы заключать в одинарные кавычки, а третий ругнётся на размерность. Во все строки, а строка это двойные кавычки, компилятор должен помещать конец строки '\0'.
Ой, ну с одинарными кавычками — это просто среди ночи тупо копипастнул и не поправил, извините уж. В добитых своей рукой коментаиях '\0' в кавычки взял, а там — не исправил.
А что касается третьего массива — его обязан делать любой компилятор, претендующий на звание компилятора языка С.
По стандарту ANSI C89 (в более поздних другой номер параграфа, в ISO C99 это параграф 6.7.8 пункт 32, а стандарт ISO C90 == ANSI C89) строка как инициализатор ведёт себя не так, как строка-литерал. В литералах, имеющих тип char*, отсылающий к неявному массиву char[], концевой '\0' гарантируется, в инициализаторах — явно заданный размер массива может «не пустить» этот ноль в массив.
Цитата:
3.5.7 Initialization ... Finally, the declaration char s[] = "abc", t[3] = "abc"; defines ``plain'' char array objects s and t whose members are initialized with character string literals. This declaration is identical to char s[] = { 'a', 'b', 'c', '\0' }, t[] = { 'a', 'b', 'c' };
А вот в C++ так нельзя и это одно из тонких отличий между языками
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения