Форум программистов, компьютерный форум CyberForum.ru

Странное поведение bool - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть два потока и глобальный массив, могут ли потоки перепутать элементы глобального массива или другого контейнера? http://www.cyberforum.ru/cpp/thread444937.html
Начать с массивов, допустим То есть ситуация такая: пусть имеется два потока и глобальный массив элементов int из двух элементов, один поток выводит в цикле значение нулевого элемента, а второй- значение первого; вот сижу думаю- могут ли они перепутать элементы? С одной стороны не могут потому как обращение к элементу по индексу однозначаено идентифицирует этот элемент; а с другой стороны,...
C++ Как средствами BC 3,1 запросить свободное место на указанном жёстком диске? Извиняюсь, если создал лишнюю тему, но ничего по своей проблемке я вроде не заметил. Если что-то есть, поправьте. А вопрос в следующем: как средствами BC 3,1 запросить свободное место на указанном жёстком диске? http://www.cyberforum.ru/cpp/thread444851.html
C++ Указания адреса функции
Есть библиотека. Нужно чтобы функция в моей библиотеке указывала на функцию в чужой. Вот мой код: typedef int (WINAPI WJMP)(); extern "C" __declspec(dllexport) WJMP Test(void); *Test= GetProcAddress(hLib, "Test"); Ошибки 1. error C2091: функция возвращает функцию
C++ Как аннулироват потоки, которые заблокированы по перменной условия (pthread)?
И никак, что ли не аннулировать, получается? Вот, допустим, есть несколько потоков которые заблокированы по переменной условия: pthread_mutex_lock (&mutex); if (!(mozno_idti)) { pthread_cond_wait(&cond, &mutex); } pthread_mutex_unlock (&mutex);
C++ Есть 4 потока. После осуществления блокировки барьером, 3 куда-то деваются, куда? (pthreads) http://www.cyberforum.ru/cpp/thread444183.html
Друзья! Как мог упростил код, вот суть В цикле создаются 4 вспомогательных потока, кадый из которых в цикле же 2 раза выводит свой TID. После первого вывода TIDа каждым потоком срабатывает блокировка барьером. Ну то есть свсе потоки по разу выведут свой TID и ждут друг друга. После того, как все собрались, в вызывающий поток отправляется сигнал типа:"Мы собрались" (потоки пока не двигаются)....
C++ Внедрение мультиплеера C++ Привет дорогие форумчане. Возникла задача сделать мультиплеер для игры(исходных кодов которой я не имею) . Разбил на задачки и вот одна из них. Первая задача это перемещение игроков. вот моя идея. Нужно получить координаты одного игрока(P1) (x,y,z) передать на сервер,сервер передает всем остальным игрокам координаты P1(x,y,z). с этим я разобрался. теперь вопрос в другом ,как обработать... подробнее

Показать сообщение отдельно
gGrn-7DA
мну довольно <(-__-)l
203 / 192 / 1
Регистрация: 17.01.2010
Сообщений: 2,391
Завершенные тесты: 1
13.02.2012, 21:11  [ТС]     Странное поведение bool
Сразу скажу это не оригинальный код.
+ бонус к загадке, только что вспомнил еще одну странность. тут уже логика моя сдает)

label1: и label2: только для наглядности.

Не по теме:

их нет и не было, это все ваше воображение)


1) label2: этого ретарна не было

2) label1: если раскоментить, то внешний цикл, работа которого зависит от возврата значения обрывался после первой итерации. если убрать работал как миленький на (M1()!=false) =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
bool CLASS::M1(char **buf, const int bufsize)
{
    //fo - член класса
    int karetka =ftell(fo);
 
    //длина строки без сомволов \r\n, если они имеются
    int length=0;
 
    //чтение строки из файла до символа \n или EOF
    while((ch=fgetc(fo))!=EOF){
        if(ch=='\n')break;
        length++;
    }
 
    int slength=ftell(fo)-karetka;
    if(slength==0)
        return false;//файл кончился
    /*чтение строки без сомволов \r\n*/
    fseek(fo,-slength,SEEK_CUR);
    char *string = new char[length+1];
    string=fgets(string,length+1,fo);
    /**/
    //смещение на символы \r\n если они были
    fseek(fo,slength-length,SEEK_CUR);
 
    if(BasicAlgorythm(string))
    {
        for(int i=0;i<bufsize;i++)
        {
            (*buf)[i]=string[i];
        }
        (*buf)[bufsize-1]='\0';
    }
    else
    {
            (*buf)[0]='\0';
    }
    
label1: //delete[] string;
label2: //return true;
}
Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Тогда тем более у тебя было возвращено неинициализированное значение
да, логично. Но почему оно != true и != false

И почему варнинг, которым многие пренебрегают, а не еррор??
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru