val = 0;
for (int i = 0; i < 4; i++)
{
unsigned char ch;
// считываем один char из потока
inp.get(ch);
// (ch & 0xFF) - паранойя, так как ch не может быть больше чем 0xFF,
// можно смело опустить и оставить только ch
// каждый unsigned char может иметь значения от 0 до 0xFF
// сдвигаем каждый прочитанный символ но (8*i) позиций, то есть при первом чтении не сдвигаем, так как
// i = 0, потом на 8, потом на 16, потом на 24
// 8 - это длина битового представления чара,
// 0xFF - это как раз 8 единичек
// затем всё склеивается операцией or.
// В итоге получится нечто вроде 0xDDCCBBAA
// если 0xAA был первый чар, 0xBB - второй и т.д.
// сдвигая на 8, мы гарантируем, что биты одного чара, не испортят биты другого чара
val |= ((ch & 0xFF) << (8*i));
}
cout << dec << val << endl;
QUEUE* take_out(QUEUE *q, NODE *node, int *error)
{
QUEUE *old_item = q; // начало очереди
NODE *old_info = 0;
if (q) // если очередь не пуста
{
old_info = old_item->info;
q = (q)->next;
delete old_item; // уничтожение элемента
*error = 0;
}
else *error = 1;
node = old_info;
return q;
....
queue = take_out(queue, p, err)
}
struct List;
struct List
{
struct List *next;
NODE *info;
};
typedef struct
{
struct List *head;
} QUEUE;
int pop(QUEUE* q, NODE* info)
{
int ret;
if (q && q->head)
{
info = q->head->info;
q->head = q->head->next;
ret = 0;
}
else
{
ret = -1;
}
}
float r = ((float)(rand()) / RAND_MAX) * 20 - 10;
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv)
{
int i, num;
if (argc > 1)
{
sscanf(argv[1], "%d", &num);
}
else
{
num = 0;
}
for (i = 0; i < num; i++)
{
float r;
r = ((float)(rand()) / RAND_MAX) * 20 - 10;
printf("%3.6f\n", r);
}
return 0;
}