реклама на сайте
подробности

 
 
> short long непонятно работает
Vavan4ik
сообщение Mar 5 2009, 09:50
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 23-12-08
Из: Украина, Днепропетровск
Пользователь №: 42 690



Всем привет!

При написании программы столкнулся с такими приколами:
Почему-то переменные типа short long и long не могут сравниваться с литералами, например проверка на отрицательность, причем в тестовой проге все проверяет и работает. Неделю бьюсь ничего в голову не приходит, помогите кто знает...

short long Integ_M;
short long Prop_M;
short long Pid_Out_M;
...

if (Pid_Out_M < 0) {Z_CurrentMod = 0;}
else if (Pid_Out_M < 40) {Z_CurrentMod = 40;} // 15..40 => 40
else if (Pid_Out_M < ImaxMod) {Z_CurrentMod = Pid_Out_M;}
else {Z_CurrentMod = ImaxMod;} // >175 => 175

в итоге имеем такое сообщение:

Error [712] main.c; 509. can't generate code for this expression

Сообщение отредактировал Vavan4ik - Mar 5 2009, 09:53
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Vavan4ik
сообщение Mar 6 2009, 07:11
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 23-12-08
Из: Украина, Днепропетровск
Пользователь №: 42 690



Вот я еще хотел спросить знатоков, нужно ли подключать какую-либо стандартную библиотеку, чтобы работать с long ? и какие могут быть грабли?
переменные long описываются в начале файла и используются как глобальные, затем в функции они используются (я так понимаю, что содержимое глобальных переменных доступно везде) :

Pid_Out_M = ((Prop_M + Integ_M + Deriv_M));
Pid_Out_M = Pid_Out_M /342; // 0...175

if (Pid_Out_M < 0) {Z_CurrentMod = 0;}
else {Z_CurrentMod = Pid_Out_M;}
else if (Pid_Out_M < 40) {Z_CurrentMod = 40;} // 15..40 => 40
else if (Pid_Out_M < ImaxMod) {Z_CurrentMod = Pid_Out_M;}
else {Z_CurrentMod = ImaxMod;} // >175 => 175

После выполнения второй строки при отрицательном Pid_Out_M результат положительный и неверный sad.gif((

Ничччего не понимаюююю
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 6 2009, 07:24
Сообщение #3


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Vavan4ik @ Mar 6 2009, 11:11) *
Ничччего не понимаюююю

Вы хоть сами понимаете, что написали в if-else ? sad.gif 

Код
Z_CurrentMod = (Pid_Out_M < 0)? 0 : ((Pid_Out_M < 40)? 40 : ((Pid_Out_M < ImaxMod)? Pid_Out_M:ImaxMod));


Проверьте скобки
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vavan4ik   short long непонятно работает   Mar 5 2009, 09:50
- - _Pasha   Цитата(Vavan4ik @ Mar 5 2009, 12:50) Erro...   Mar 5 2009, 10:11
|- - xemul   Цитата(_Pasha @ Mar 5 2009, 13:11) На вся...   Mar 5 2009, 10:25
- - zltigo   Цитата(Vavan4ik @ Mar 5 2009, 12:50) shor...   Mar 5 2009, 10:20
- - Vavan4ik   1) для начала HI-TECH C PRO for the PIC10/12/16 MC...   Mar 5 2009, 10:32
|- - xemul   Цитата(Vavan4ik @ Mar 5 2009, 13:32) 1) д...   Mar 5 2009, 11:10
- - Vavan4ik   Спасибо за ответ, но как быть, если нужно работать...   Mar 5 2009, 11:23
|- - xemul   Цитата(Vavan4ik @ Mar 5 2009, 14:23) Спас...   Mar 5 2009, 11:28
- - Vavan4ik   дело в том, что и long выделывается, как ни крути ...   Mar 5 2009, 11:33
|- - xemul   Цитата(Vavan4ik @ Mar 5 2009, 14:31) дело...   Mar 5 2009, 11:58
- - _Pasha   Цитата(Vavan4ik @ Mar 5 2009, 13:32) HI-T...   Mar 5 2009, 12:03
- - Vavan4ik   я уже писал, что в тесте все работает красиво, а в...   Mar 5 2009, 12:13
|- - xemul   Цитата(Vavan4ik @ Mar 5 2009, 15:13) я уж...   Mar 5 2009, 12:40
- - Vavan4ik   большое человеческое спаПИВО!   Mar 5 2009, 12:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 10:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016