Ошибки, баги, вопросы - страница 3320

 
Alexey Viktorov #:

И???

Где оператор?

do
    while( 0 ); //(1)
while( 0 );     //(2)
 
Sergey Gridnev #:

Посмотрите на синтаксис оператора цикла do ... while()

Тело там обязательно!
Оно может быть пустым:
do {} while(...)
но оно не может отсутствовать.

А в МЕ проверить не судьба? 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Viktorov, 2023.05.22 16:53

И если нет ни одной команды, то скобки тоже не нужны.

Если в цикле нет тела, то компилятор просто выкинет его и не будет его учитывать.

      do
        while(0);


 

Как вы здо́рово дописываете свои сообщения…

Я тоже допишу. В этом варианте получается цикл do while и второй, отдельный цикл while

Вот ведь уже было сказано о точке с запятой

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Alexey Viktorov, 2023.05.22 16:53

И если нет ни одной команды, то скобки тоже не нужны.

Если в цикле нет тела, то компилятор просто выкинет его и не будет его учитывать.

      do
        while(0);

Не надо сочинять…

#define While(X)        for(;(X);)
void OnStart()
{
    do             // Начало цикла.
        While( 0 ) {} //нормально потому, что это просто тело цикла.
    while( 0 ); // Условие завершения цикла.
}
void OnStart()
{
    do                   // Начало цикла
        while( 0 ) {} // Завершение цикла, но написано с ошибкой. Нет ; 
    while( 0 );       // А ЭТО ЧТО??? Видимо новый цикл…
}

 
Alexey Viktorov #:

Как вы здо́рово дописываете свои сообщения…

Вот ведь уже было сказано о точке с запятой


Это уже другой код

 
A100 #:

Это другой уже код

Где здесь по Вашему мнению оператор?

Вам нужен оператор, вы и допишите его. Но это ничего не изменит. Этот пример состоит из двух разных циклов.

 
Alexey Viktorov #:

Вам нужен оператор, вы и допишите его. Но это ничего не изменит. Этот пример состоит из двух разных циклов.

Вопрос не в количестве циклов, а в порядке, в котором они выполняются

 

Вот вам другой пример из документации

for(выражение1; выражение2; выражение3)
   оператор;

Но тем не менее вы часто пишете пустой цикл

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2023.05.22 15:21

Задача компилятора не читать мысли, а интерпретировать код строго по синтаксису:

#define While(X)        for(;(X);)
void OnStart()
{
    do
        While( 0 ) {} //нормально
    while( 0 );
}
Где оператор?
 
Alexey Viktorov #:

Вот вам другой пример из документации

Но тем не менее вы часто пишете пустой цикл

Где оператор?
{}
 
Alexey Viktorov #:

А в МЕ проверить не судьба? 

Вы троллите?
 
Sergey Gridnev #:
Вы троллите?

А проверить в отладке не судьба?

Как вы думаете где остановится отладка


Вот тут

Компилятор выкинул весь идиотизм без операторов… НО!!! не сообщил об ошибке только потому, что не способен понять цикл while(0)

Поставьте другое условие и проверяйте что будет происходить.

Причина обращения: