29.07.2013, 11:34
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от eddy
|
dosikus, я за то, чтобы сначала человек выучил по-человечески основы языка программирования, и лишь потом начинал пользоваться всякими прибамбасами. А то, понимаешь, начнет сразу использовать динамические массивы или еще какую "фишку", и где-нибудь в очередном проекте сядет в лужу, когда у него "внезапно" кончтится стек или еще что-нибудь эдакое произойдет!
|
А кто то озвучил что нужно все и сразу? Можно и без динамических массивов и без структур и без указателей.
Вот только типы данных -основное, без которого дальнейшее продвижение малоэффективно,
если вообще возможно...
__________________
Осторожно , злой кот
|
|
|
|
29.07.2013, 11:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от dosikus
|
типы данных -основное, без которого дальнейшее продвижение малоэффективно
|
Как я уже говорил, типы вроде uint8_t, применяются редко: лишь при обмене бинарной информации или жестком распределении памяти. Использование бинарных форматов для обмена информации считается моветоном, как и ручное управление памятью. Поэтому все-таки лучше такие типы не использовать: пусть компилятор сам решает, что лучше для вашей архитектуры.
Ну, а в случае микроконтроллеров, конечно, можно и этими типами пользоваться. Лично я же особой разницы не вижу: хоть int8_t напиши, хоть char — на большинстве современных архитектур это будет восьмибайтное целое.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
29.07.2013, 11:45
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от eddy
|
не вижу: хоть int8_t напиши, хоть char — на большинстве современных архитектур это будет восьмибайтное целое.
|
Зря не видишь .
int8_t - знаковое целое 8 бит - и это однозначно
char - зависит от компилятора и не всегда оно и беззнаковое и не всегда 8 бит.
Цитата:
|
Поэтому все-таки лучше такие типы не использовать: пусть компилятор сам решает, что лучше для вашей архитектуры.
|
Серьезно?
nahimovv же выше приводил что выходит если отдаться компилятору...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 29.07.2013 в 11:50.
|
|
|
|
29.07.2013, 11:58
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от eddy
|
А "керниганоритчевский" С — устоявшийся стандарт, и понять его может каждый, кто С изучал.
|
взял как начинающий пример из "керниганоритчера":
Код:
|
#DEFINE LOWER 0/* LOWER LIMIT OF TABLE */
#DEFINE UPPER 300 /* UPPER LIMIT */
#DEFINE STEP 20 /* STEP SIZE */
MAIN () /* FAHRENHEIT-CELSIUS TABLE */
{
INT FAHR;
FOR (FAHR =LOWER; FAHR ‹= UPPER; FAHR =FAHR + STEP)
PRINTF("%4D %6.1F\N", FAHR, (5.0/9.0)*(FAHR-32));
} |
винавр - не работает, наверное другой стандарт был
Цитата:
|
../TestKernigan.c:1:3: error: invalid preprocessing directive #DEFINE
|
|
|
|
|
29.07.2013, 11:59
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от oleg110592
|
винавр - не работает, наверное другой стандарт был
|
Или скопипастил с ошибками либо регистр смени.
Часом не с OCR копипастишь ?
ЗЫ регистр смени и в define и в for да и везде. Это не K&R косяк а редакторов.
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 29.07.2013 в 12:05.
|
|
|
|
29.07.2013, 12:03
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
тут брал: http://lib.ru/CTOTOR/kernigan.txt
у них наверное тогда в пк не было маленьких букв
|
|
|
|
29.07.2013, 12:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
oleg110592, ясен пень! Как оно будет работать, если регистр верхний?
Кстати, сам замечал: в старых кривых книжках зачем-то набирали сишные тексты заглавными буквами (наверное, бейсико-фортрановское наследие). А между тем C является регистрочувствительным языком!
Вот так правильно:
Код:
|
#include ‹stdio.h›
#define LOWER 0/* lower limit of table */
#define UPPER 300 /* upper limit */
#define STEP 20 /* step size */
int main(int argc, char **argv){
int fahr;
for(fahr =LOWER; fahr ‹= UPPER; fahr =fahr + STEP)
printf("%4d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));
return 0;
} |
Компиляем:
Код:
|
gcc 11.c -Wall -Werror -o fahr |
запускаем:
Код:
|
./fahr
0 -17.8
20 -6.7
40 4.4
60 15.6
80 26.7
100 37.8
120 48.9
140 60.0
160 71.1
180 82.2
200 93.3
220 104.4
240 115.6
260 126.7
280 137.8
300 148.9 |
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 29.07.2013 в 12:11.
|
|
|
|
29.07.2013, 12:10
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
oleg110592,
Кстати рекомендую тыркаться не в АВР студии а поставить IDE типа Codeblocks или
DEV-CPP . Создавая консольноые приложения , но не С++ а просто С .
Выхлоп в консоль и дебаг , весьма удобно.
Блин eddy уже опередил с линухом
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 29.07.2013 в 12:14.
|
|
|
|
29.07.2013, 12:10
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от eddy
|
Как оно будет работать, если регистр верхний?
|
там не только это не будет работать - tempora где-то ранее пояснял.
а char там уже давно было написано может быть разным:
Код:
|
Таблица 1
---------------------------------------------------------
!
DEC PDP-11 HONEYWELL IBM 370 INTERDATA !
6000 8/32 !
!
ASCII ASCII EBCDIC ASCII !
!
CHAR 8-BITS 9-BITS 8-BITS 8-BITS !
INT 16 36 32 32 !
SHORT 16 36 16 16 !
LONG 32 36 32 32 !
FLOAT 32 36 32 32 !
DOUBLE 64 72 64 64 !
!
--------------------------------------------------------- |
|
|
|
|
29.07.2013, 12:17
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от eddy
|
Как я уже говорил
|
И что толку с этого?
Цитата:
|
типы вроде uint8_t, применяются редко
|
Кто сказал? Источник изысканий можно? Или от фонаря?
Исходники STM8, STM32 и др. просто пестрят этими переобъявлениями!
int'ы ведь тоже могут быть разными, так зачем заранее засирать себе мозги неопределённостью!?
Цитата:
|
Поэтому все-таки лучше такие типы не использовать: пусть компилятор сам решает, что лучше для вашей архитектуры.
|
Поэтому все-таки лучше не давать дурных советов, особенно если сам в этом не разбираешься.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:08.
|
|