Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2012, 20:51   #1
avov
Новичок
Джуниор
 
Регистрация: 05.02.2012
Сообщений: 4
Вопрос не могу разобраться с функцией

Kто нибудь может объяснить что делает эта функция и какой результат будет.
Код:
void MapBytes(unsigned char *a, unsigned char *b)
{
    while(*a)
    {
       *(b++)  = MapNumber(*(a++));
    }
}

const unsigned char a[11] ={0x9C,0xBA,0x70,0xED,0x7F
,0xBA,0x0B,0xBC,0x6E,0xC5,0x00};

void main()
   unsigned char buf[100];

   MapBytes(a,  buf);
   strcat(buf, "realtime");
}
Oсобенно хотелось бы узнать что значит строчка
Код:
*(b++)  = MapNumber(*(a++));

функция MapNumber () в данном случае возвращает число произведя с ним определенные арифметические действия.

Заранее благодарен
avov вне форума Ответить с цитированием
Старый 05.02.2012, 20:54   #2
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Код:
*(b++)  = MapNumber(*(a++));
То же самое, что и
Код:
*b = MapNumber(*a);
a++;
b++;
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 05.02.2012, 21:21   #3
avov
Новичок
Джуниор
 
Регистрация: 05.02.2012
Сообщений: 4
По умолчанию

спасибо!!!

еще один вопрос

функция MapNumber ()
Код:
unsigned char  MapNumber(unsigned char x)
{
   unsigned char       y;
   y=42;

   while(x)
   {
      y += x++;
   }
   return y;
}
если я правильно понимаю то функция возвращает значение y увеличеное на 1.

то есть если а = 0x9C что эквивалентно 156 , то значение буф будет 43????????
avov вне форума Ответить с цитированием
Старый 05.02.2012, 21:51   #4
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от avov Посмотреть сообщение
спасибо!!!

еще один вопрос

функция MapNumber ()
Код:
unsigned char  MapNumber(unsigned char x)
{
   unsigned char       y;
   y=42;

   while(x)
   {
      y += x++;
   }
   return y;
}
если я правильно понимаю то функция возвращает значение y увеличеное на 1.

то есть если а = 0x9C что эквивалентно 156 , то значение буф будет 43????????
На основании чего вы решили, что функция возвращает значение y, увеличенное на 1?
Допустим в функцию передали значение x, равное первому элементу константного символьного массива a, равного 0x9C. Тогда внутри цикла while происходит постоянное суммирование y со значением x, увеличиваемое на 1, пока не произойдет переполнение байта, соответсвующего типу char.

То есть происходит суммирование 42 + 0x9C + 0x9D + ... + 0xFF. В чем смысл ттакого суммирования, я не знаю.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 05.02.2012, 22:16   #5
avov
Новичок
Джуниор
 
Регистрация: 05.02.2012
Сообщений: 4
По умолчанию

я думал что while будет длится до тех пор пока значение х не изменится,
т.e. цикл while закончится когда х увеличится на один.

если я правильно понял в данном случае эта функция вводит программу в бесконечный цикл, что приводит к переполнению char и к крушению программы
???????
avov вне форума Ответить с цитированием
Старый 05.02.2012, 23:40   #6
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от avov Посмотреть сообщение
я думал что while будет длится до тех пор пока значение х не изменится,
т.e. цикл while закончится когда х увеличится на один.

если я правильно понял в данном случае эта функция вводит программу в бесконечный цикл, что приводит к переполнению char и к крушению программы
???????
Никакого бесконечного цикла нет. После значения 0xFF переменная x примет значение 0, и условие цикла не будет выполнено.
Только не понятен смысл этой функции.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 06.02.2012, 00:21   #7
avov
Новичок
Джуниор
 
Регистрация: 05.02.2012
Сообщений: 4
По умолчанию

получается что результатом данной функции, при любых значениях будет х, будет 42 или значение переменной y .

я правильно понимаю?
Спасибо что объясните новичку.
avov вне форума Ответить с цитированием
Старый 06.02.2012, 00:54   #8
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от avov Посмотреть сообщение
получается что результатом данной функции, при любых значениях будет х, будет 42 или значение переменной y .

я правильно понимаю?
Спасибо что объясните новичку.
Я не знаю, на основании чего вы сделали этот вывод. Я вам уже написал, что y будет равно сумме 42 + x + ( x + 1 ) + ... + 0xFF
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ разобраться с функцией VIK_aka_TOR Помощь студентам 0 07.12.2011 00:17
Разобраться с функцией Parse cargo29 Общие вопросы Delphi 5 08.03.2011 10:31
Не могу разобраться с функцией ReadConsole Иллидан Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 10.10.2010 17:34
Подскажите, не могу разобраться с функцией INSERT KARUSHEV БД в Delphi 27 17.07.2009 17:54
Помогите разобраться с собственной функцией MasterofCDM Общие вопросы Delphi 4 03.04.2009 12:15