|
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
|
||||||
Вопросы о С.18.07.2011, 01:49. Показов 165791. Ответов 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++ Вопросы по Си Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|