Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
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 Сообщений: 19638 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: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++ так нельзя и это одно из тонких отличий между языками
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения