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

 
 
> Помогите новичку, работа с массивами
masterpc
сообщение Jan 17 2008, 08:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 1-03-07
Из: Винница
Пользователь №: 25 788



Подскажите, что может быть:

Пишу вот так:

byte k;
while(k=0, k<9, k++) sens[0][k]=0xff;


Ничего в массив не пишется,
а если написать так:

sens[0][0]=0xff;
sens[0][1]=0xff;
sens[0][2]=0xff;
sens[0][3]=0xff;
sens[0][4]=0xff;
sens[0][5]=0xff;
sens[0][6]=0xff;
sens[0][7]=0xff;
sens[0][8]=0xff;
- то все ок.

на самом деле такого не нужно в проге, это я с глюком разобраться не могу.

Спасибо!

Сообщение отредактировал masterpc - Jan 17 2008, 08:25
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
masterpc
сообщение Jan 17 2008, 09:11
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 1-03-07
Из: Винница
Пользователь №: 25 788



Вот такая запись помогла:

byte k=0;
while(k<9){
sens[0][k]=0xff;
k++;
}


Видно это из-за двухмерного массива, потому как запись while (k=0, k<9, k++) инструкция; тоже верна, но для одной инструкции. По крайней мере с одномерным массивом все нормально.
Всем спасибо за помощь!!!!
Go to the top of the page
 
+Quote Post
KRS
сообщение Jan 17 2008, 09:26
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(masterpc @ Jan 17 2008, 12:11) *
Вот такая запись помогла:

byte k=0;
while(k<9){
sens[0][k]=0xff;
k++;
}


Видно это из-за двухмерного массива, потому как запись while (k=0, k<9, k++) инструкция; тоже верна, но для одной инструкции. По крайней мере с одномерным массивом все нормально.
Всем спасибо за помощь!!!!

VladimirYU ПРАВ!
у вас , вместо ;
это очень грубая ошибка
Go to the top of the page
 
+Quote Post
masterpc
сообщение Jan 17 2008, 09:32
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 1-03-07
Из: Винница
Пользователь №: 25 788



Цитата(KRS @ Jan 17 2008, 11:26) *
VladimirYU ПРАВ!
у вас , вместо ;
это очень грубая ошибка


С ";" компилятор ругается, но это уже не важно, главное, что работает , ведь самая правильная прога это та, которая работает smile.gif
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 17 2008, 11:20
Сообщение #5


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(masterpc @ Jan 17 2008, 11:32) *
С ";" компилятор ругается, но это уже не важно, главное, что работает , ведь самая правильная прога это та, которая работает smile.gif

Судя по всему автор так и не понял, какую он ахинею написал smile.gif
Попробую разъяснить еще раз, хотя уже вроде бы все написано.

while (k=0, k<9, k++) инструкция;
Такая конструкция вполне допустима исходя из синтаксиса языка Си, но она не имеет смысла.
Применение запятых в условии цикла while говорит о следующих друг за другом условиях.
Компилятор будет делать следующее:
1. присвоит значение k=0
2. проверит условие k<9, оно будет истинным - true
3. проверит значение k, оно будет ложным (k=0), и тело цикла не будет выполняться ни разу
4. увеличит значение k++, посколько постинкремент

А правильная конструкция, как уже написали:
for (k=0; k<9; k++) инструкция;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- masterpc   Помогите новичку   Jan 17 2008, 08:24
- - KRS   А как сам массив описан? IAR особенно при включенн...   Jan 17 2008, 08:30
- - CSB   У меня в IAR 3.42A правильно работает так: Кодint ...   Jan 17 2008, 08:56
- - VladimirYU   Цитата(masterpc @ Jan 17 2008, 12:24) Под...   Jan 17 2008, 09:02
|- - KRS   Цитата(masterpc @ Jan 17 2008, 12:32) С ...   Jan 17 2008, 10:01
||- - Сергей Борщ   Цитата(KRS @ Jan 17 2008, 12:01) Конечно ...   Jan 17 2008, 10:26
|- - masterpc   Цитата(Baser @ Jan 17 2008, 13:20) А прав...   Jan 17 2008, 11:29
|- - Сергей Борщ   Цитата(Baser @ Jan 17 2008, 13:20) Примен...   Jan 17 2008, 13:45
- - CSB   С одномерным массивом Ваш вариант "while (k=0...   Jan 17 2008, 09:35
|- - andrew_b   Цитата(CSB @ Jan 17 2008, 12:35) (k=0, k...   Jan 17 2008, 10:12
- - CSB   >И в итоге бесконечный цикл... Именно. Я же не ...   Jan 17 2008, 10:25
- - KRS   Когда я быстро просматривал текст строчки Кодbyte ...   Jan 17 2008, 10:26
- - CSB   >Именно результат k++ будет проверяться в цикле...   Jan 17 2008, 13:56
|- - Сергей Борщ   Цитата(CSB @ Jan 17 2008, 15:56) Возможно...   Jan 17 2008, 14:42
|- - Baser   Цитата(Сергей Борщ @ Jan 17 2008, 16:42) ...   Jan 17 2008, 17:25
|- - Сергей Борщ   Цитата(Baser @ Jan 17 2008, 19:25) Не вол...   Jan 17 2008, 17:53
- - KRS   Цитата(Сергей Борщ @ Jan 17 2008, 20:53) ...   Jan 17 2008, 18:54
|- - VladimirYU   С запятыми в IAR AVR вообще интересная штука. Начи...   Jan 18 2008, 05:58
|- - Сергей Борщ   Цитата(VladimirYU @ Jan 18 2008, 07:58) Н...   Jan 18 2008, 09:04
|- - VladimirYU   А если вне циклов, найдите отличия: Классика: ...   Jan 18 2008, 09:25
|- - Сергей Борщ   Цитата(VladimirYU @ Jan 18 2008, 11:25) А...   Jan 18 2008, 09:58
|- - ReAl   Цитата(VladimirYU @ Jan 18 2008, 11:25) А...   Jan 18 2008, 10:49
|- - VladimirYU   Цитата(ReAl @ Jan 18 2008, 14:49) Запятая...   Jan 18 2008, 11:08
- - Freeze Anti   я извиняюсь... прочитал тут дискуссию и не понял о...   Feb 5 2008, 17:24
- - CSB   Цитата(k=0, k<9, k++) - это все 0, т.е. инструк...   Feb 5 2008, 19:09


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:00
Рейтинг@Mail.ru


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