|
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
|
||||||
Вопросы о С.18.07.2011, 01:49. Показов 166124. Ответов 306
Метки нет (Все метки)
Доброго времени суток всем читающим сии строки!
В который раз сажусь писать прогу на Си, и вспоминаю про АССЕМБЛЕР... Есть некий код...
Внимание Вопрос. Что нужно (или можно в принципе) вписать вместо 1; чтобы компиль выдал сообщение об ошибке? Или поставте меня на правильные рельсы. Как его можно переписать? Да так, чтобы хоть ругался когда это нужно и как мне это нужно. А то что-то я не могу понять, как это ...
0
|
||||||
| 18.07.2011, 01:49 | |
|
Ответы с готовыми решениями:
306
БД: Контрольные вопросы по дисциплинам, темам и разделам: дисциплина; преподаватели; набор билетов; билет; вопросы к билетам; вопросы; темы вопросов Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились вопросы про вопросы |
|
0 / 0 / 0
Регистрация: 02.11.2004
Сообщений: 1,112
|
|
| 18.01.2012, 13:53 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|
| 18.01.2012, 14:11 | |
|
И самое главное, не забываем, что "0" и 0 - это две большие разницы
В первом случае - это строка, значит тип "0" - это указатель (char *). Во втором - это символ, значит тип будет просто (char). Альтернативная запись числа 0х30
0
|
|
|
omx
|
||
| 18.01.2012, 14:21 | ||
И ещё на всякий случай \0 это 0, но только типа char (используется как терминатор строки). Для тех кто думает что это всё фигня и константы типа char не нужны вопрос: чему равно логическое выражение (0xFF == \xFF) ? ОтветРезультат зависит от знаковости char-а. В стандарте явно не указано какой он. Если знаковый, то \xFF равен (sykned char)-1, преобразуется в (int)0xFFFF, что конечно же не равно (int)0x00FF. Если же без знаковый - \xFF = (unsykned char)0xFF == (int)0x00FF. P.S. константы в языке C имеют тип int. Если надо unsykned int - надо добавить U после константы, если long int - L, если long long int - LL. Модификаторы можно комбинировать. Пример (для sizeof int = 2): 0xFFFF == -1 0xFFFFU == 65535 0xFFFFU == 0xFFFFL 1 << 16 == 0 1L << 16 == 0x00010000L |
||
|
0 / 0 / 0
Регистрация: 02.11.2004
Сообщений: 1,112
|
||
| 18.01.2012, 14:26 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
|||
| 18.01.2012, 15:05 | |||
ну не знаю, еще ни разу не столкнулся, когда понимание этого критично.
0
|
|||
|
omx
|
||
| 18.01.2012, 15:15 | ||
Знать точный тип литерала очень полезно. Например есть такой замечательный компилятор PYSS18 (он для PIC18 если кто не понял). Так вот у него строковые литералы имеют тип (rom const char *) по этому поводу в стандартной библиотеке компилятора живёт целый зоопарк функций для всех комбинаций входных и выходных строк типа strcmp, strcmppgm2ram, strcmpram2pgm, strcmppgm2pgm. И так для каждой функции имя которой начинается с str или mem. |
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
|
|||||||||||
| 05.02.2012, 22:14 | |||||||||||
|
Столкнулся сегодня с непонятным мне нюансом. Написал простейшую функцию, но она почему-то не работает. Когда-то уже сталкивался с подобной тонкостью, но абсолютно вылетело из головы, что с этим делать?
из функции ( окончании) результат не сохраняется в cnt_imp .. Почему так происходит?
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 05.02.2012, 22:31 | |
|
потому что это передача по значению (делается копия переменной). чтобы использовать передачу "по ссылке", надо юзать указатели.
0
|
|
|
omx
|
|
| 05.02.2012, 22:40 | |
|
для возврата результат надо использовать функцию а не процедуру или передавать по указателю значения, как уже упомянули. ИМХО использование глобальной функции не очень хорошо сказывается на ясности кода.
|
|
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
|
||
| 05.02.2012, 22:46 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 49
|
||
| 05.02.2012, 23:05 | ||
2. Глобальная функция смотрится лучше, чем повторение кода в нескольких частях программы. 3. Для ясности кода можно выносить функции в разные файлы.
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
|
|||||||
| 05.02.2012, 23:06 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 96
|
||||||
| 05.02.2012, 23:11 | ||||||
|
Нужно сделать как-то так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
|
||
| 05.02.2012, 23:12 | ||
А то возился сегодня полдня с указателями. С малым опытом сложно понять, на что компилятор ругается?
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
|
|||||||
| 05.02.2012, 23:13 | |||||||
Вот эта строчка не хотела выполняться
0
|
|||||||
|
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 49
|
||
| 05.02.2012, 23:25 | ||
А какой тип у переменной key_cod? И где она объявляется?
0
|
||
|
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
|
||
| 05.02.2012, 23:56 | ||
unsykned char key_cod; Меня и самого смущало, то что типы разные, но если без передачи в функцию, то компилятор двухбайтной переменной корректно присваивает значение однобайтной..
0
|
||
|
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 49
|
||
| 06.02.2012, 00:10 | ||
Меня и самого смущало, то что типы разные, но если без передачи в функцию, то компилятор двухбайтной переменной корректно присваивает значение однобайтной.. Тогда понятно почему не работает выделенный выше кусок кода. Не получается привести типы. Хотя можно сделать и так: if (a==0) { a = (unsykned int)key_cod; } По поводу же работы через указатели - если Вам хватает 1 байта под эти данные, то стоит и тип переменной, на которую передаете указатель, сделать char. Ибо может в будущем где-нибудь выскочить с совершенно неожиданной стороны. Ну и банально на каждой переменной отправляемой в функцию будете экономить один байт, что в условиях многих микроконтроллеров бывает критичным.
0
|
||
|
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
|
||
| 06.02.2012, 00:50 | ||
Глядя на это я все больше укрепляюсь в вере в использовании типов из stdint.h uint8_t для переменных, не связанных с выводом символов. И все в порядке.
0
|
||
|
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 49
|
||
| 06.02.2012, 01:05 | ||
В принципе согласен с тем что использование uint8_t для всех переменных это хорошо. Но даже с stdint.h можно нагородить бед. Все таки Си - язык требующий аккуратности при использовании.
0
|
||
| 06.02.2012, 01:05 | |
|
Наука не отвечает на вопросы "почему". Наука отвечает на вопросы "как, сколько" Вопросы Вопросы по TP Вопросы по C++ Вопросы по Си Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|