Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731

Компилятор пропускает цикл

25.10.2016, 20:02. Показов 1812. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, в общем думаю однажды, когда нибудь, у всех такая проблема возникала.

В общем в отладчике искал проблему и когда отладчик доходит до цикла:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
                        for (int triangl = 0; triangl > 2; triangl++) {
                            //Первый примитив
                            if (triangl == 0) {
                                ////////////////////////////////////////////////////
                                //Занесение данных в массивы
                                ////////////////////////////////////////////////////
                                //Заполнение данными координат треугольник 1
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 0] = pos_sumb_x_1;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 1] = pos_sumb_y_1;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 2] = Position_z;
 
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 3] = pos_sumb_x_2;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 4] = pos_sumb_y_2;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 5] = Position_z;
 
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 6] = pos_sumb_x_3;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 7] = pos_sumb_y_3;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 8] = Position_z;
 
                                //Заполнение данными текстурных координат треугольник 1
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 0] = Tex_coord_x_1;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 1] = Tex_coord_y_1;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 2] = Tex_sloy;
 
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 3] = Tex_coord_x_2;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 4] = Tex_coord_y_2;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 5] = Tex_sloy;
 
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl] * 9 + 6] = Tex_coord_x_3;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl] * 9 + 7] = Tex_coord_y_2;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl] * 9 + 8] = Tex_sloy;
 
                                //Заполнение массива текстурного ID треугольник 1
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 0] = Tex_ID;
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 1] = Tex_ID;
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 2] = Tex_ID;
                            }
                            //Второй примитив
                            if (triangl == 1) {
                                //Заполнение данными координат треугольник 2
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 0] = pos_sumb_x_3;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 1] = pos_sumb_y_3;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 2] = Position_z;
 
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 3] = pos_sumb_x_4;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 4] = pos_sumb_y_4;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 5] = Position_z;
 
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 6] = pos_sumb_x_1;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 7] = pos_sumb_y_1;
                                Triangle_GUI.Vertex_Mass_triangle_coord[begin_array_triangle[triangl + (i * 2)] * 9 + 8] = Position_z;
 
                                //Заполнение данными текстурных координат треугольник 2
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 0] = Tex_coord_x_3;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 1] = Tex_coord_y_3;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 2] = Tex_sloy;
 
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 3] = Tex_coord_x_4;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 4] = Tex_coord_y_4;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 5] = Tex_sloy;
 
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 6] = Tex_coord_x_1;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 7] = Tex_coord_y_1;
                                Triangle_GUI.Vertex_Mass_triangle_TexCOR[begin_array_triangle[triangl + (i * 2)] * 9 + 8] = Tex_sloy;
 
                                //Заполнение массива текстурного ID треугольник 2
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 0] = Tex_ID;
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 1] = Tex_ID;
                                Triangle_GUI.Vertex_Mass_triangle_TexID[begin_array_triangle[triangl + (i * 2)] * 3 + 2] = Tex_ID;
                            }
                        }
Он этот цикл проскакивает, будто бы условия выхода уже выполнены.
Читал о данной проблеме и понял что это компилятор оптимизирует код убирая не нужное. Как ему указать явно что эту часть пропускать никак нельзя?
Просто отключать оптимизацию всего кода полностью, очень не выгодно. Но нужно чтобы он тут не пропускал..
Компилятор VS14
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2016, 20:02
Ответы с готовыми решениями:

Компилятор пропускает цикл
Здравствуйте товарищи. Столкнулся с проблемой, что компилятор пропускает цикл. Компилировал в VS2012. Потом сменил её на MinGW. Всё...

Компилятор пропускает getline
добрый вечер, пишу лабу для 10 класса по переводу числа из одной СС в другую. По неведомой мне причине компилятор пропускает строчку с...

Компилятор пропускает две строчки
Здравствуйте! Вкратце о задании: нужно создать структуру, с помощью которой будет вводится информация о товаре. Два элемента структуры...

3
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
25.10.2016, 20:05
Лучший ответ Сообщение было отмечено koker007 как решение

Решение

Цитата Сообщение от koker007 Посмотреть сообщение
будто бы условия выхода уже выполнены.
ну так
C++
1
(int triangl = 0; triangl > 2; triangl++)//triangl равен 0 -> (0 > 2)? -> Нет -> выход
1
25.10.2016, 20:25

Не по теме:

koker007, А почему такой хилый отступ от левого края? Сделал бы отступ на полный экран, оно, глядишь, и интрига...:D

0
 Аватар для koker007
59 / 52 / 11
Регистрация: 04.08.2015
Сообщений: 731
25.10.2016, 22:23  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
ну так
//triangl равен 0 -> (0 > 2)? -> Нет -> выход
Блин, действительно, не внимательно написал.. спс... извиняюсь за потраченное время.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2016, 22:23
Помогаю со студенческими работами здесь

Компилятор пропускает строчки с инициализацией
здравствуйте! Копмилятор пропускает строчки с инициализацией переменных. При попытке поставить маркер, переносит этот маркер на строчку...

Компилятор пропускает строки кода
Начал писать морской бой но сталкнулся со сложность что компилятор пропускает строчки кода.Я начинающий програмист на c++. ...

Встроенные библиотеки и функции, которые не пропускает компилятор
Пытаюсь запустить код из книги. Но компилятор ругается на это #include "std_lib_facilities.h" и функцию keep_window_open(); Без...

Использование -> вместо . - почему компилятор пропускает этот случай?
node_t(const node_t<T>& target) { init(target->value, target->ptr_next); } Почему использование -> позволяется? Разве не должна...

Работа с файлами и списками C++. Не вводиться переменная, как будто её пропускает компилятор
В строке 23 компилятор как будто её пропускает, то есть не вводит переменную fam с клавиатуры, не могу понять почему #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru