Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Очень глупый вопрос

Страниц (2): [1] 2 »
 

1. Redear - 14 Января, 2023 - 10:27:15 - перейти к сообщению
Задался вопросом.
Если в конструкции { .. } 1 действие, будет ли ошибкой компилятора кибор не ставить точку с запятой?

CODE:

{
a=12
}


или
нужно все таки
CODE:
{
a=12;
}



просто оно работает и в первом случае, просто есть подозрение, что это может вызывать критическую ошибку иногда


CODE:
{
f=22;
b=22;
a=12
}

а если к примеру, действии много. но в конце ; не ставим
просто я как прогер любитель уже написал куча кода подобным образом в проекте. и есть подозрения что это ломает кибор(


прошу подсказки. спасибо
2. Zireael - 14 Января, 2023 - 10:44:02 - перейти к сообщению
Лучше не нарушать синтаксис.
Если действие одно, то можно не ставить фигурные скобки.
Оба кода равнозначны:
CODE:
if(1==1)messagebox("true");

CODE:
if(1==1)
{
messagebox("true");
}

Так тоже можно:
CODE:
if(1==1)messagebox("true");
else messagebox("false");
3. Nik2 - 14 Января, 2023 - 10:44:15 - перейти к сообщению
помоему ; обязательна.
4. OKStyle - 14 Января, 2023 - 12:25:33 - перейти к сообщению
Да, может возникнуть проблема.
Нехватка или лишние ; могут привести к тому, что кибор будет выдавать непонятные ошибки. Особенно, если программа большая.
Сам сегодня попался почти на такой же ситуации, искал часа полтора. Только потом понял в чем дело.


Как сказал один умный человек
 Zireael пишет:
Лучше не нарушать синтаксис.
5. Redear - 14 Января, 2023 - 15:27:56 - перейти к сообщению
 Zireael пишет:
if(1==1)messagebox("true"Подмигивание;
else messagebox("false"Подмигивание;


тут нет ошибки? разве в таком случае после ("true"Подмигивание ставится точка с запятой?
(Добавление)
и еще меня интересует вопрос, если мы переходим с goto по метке например с:
то после перехода я могу сразу поставить ;
пример:
goto mark;
...
...
...
mark:;
...

или после перехода по метке тоже нельзя ставить ;
6. OKStyle - 14 Января, 2023 - 15:39:13 - перейти к сообщению
Наоборот. Ошибка будет, если не поставишь знак.

Тут две инструкции. Первая - условие "если". Вторая "иначе".
Если первая инструкция выполнена, то вторая пропускается. И наоборот.

Чтобы было понятнее, то "точка с запятой" ставится всегда, когда инструкция закончена.
Это может быть goto, может быть изменение переменной и все что угодно.
Но есть исключение! В блоках не обязательно ставить этот символ.

Пример ниже. (В блоках, который начинаются с { и заканчиваются } - ставить точку с запятой не обязательно. В блоках, каждая строка автоматически заканчивается этим символом
CODE:
if(1==1)
{
messagebox("Текст высветится без ошибок")
}
7. Zireael - 14 Января, 2023 - 15:57:42 - перейти к сообщению
 Цитата:
и еще меня интересует вопрос, если мы переходим с goto по метке например с:
то после перехода я могу сразу поставить ;

Можно.
 Цитата:
(В блоках, который начинаются с { и заканчиваются } - ставить точку с запятой не обязательно.

Нет, обязательно. Напишет ошибку:
CODE:
if(1==1)
{
messagebox("111")
messagebox("222")
}
8. OKStyle - 14 Января, 2023 - 16:20:39 - перейти к сообщению
[quote=Zireael]
 Цитата:

CODE:
if(1==1)
{
messagebox("111")
messagebox("222")
}


Вы совершенно правы, в Вашем примере точно выдаст ошибку.
Совсем забыл, что одно из условий - одна строка в блоке. В таком случае не обязательно ставить этот символ.

В моем примере именно одна строка, поэтому должно обработать нормально.
9. Redear - 14 Января, 2023 - 16:28:07 - перейти к сообщению
так вот это и был первый основной вопрос.
OKSTYLE пишет, что если в скобках одна строка, то ошибки не будет, если ; не ставить
Zirael пишет, что нужно, всегда и везде тыкать ;

хотелось бы точно понимать действительно ли конструкция не выдаст ошибку в будущем
{ a=15 } тоже самое что { a=15; }
10. OKStyle - 14 Января, 2023 - 16:39:36 - перейти к сообщению
 Redear пишет:
так вот это и был первый основной вопрос.
OKSTYLE пишет, что если в скобках одна строка, то ошибки не будет, если ; не ставить
Zirael пишет, что нужно, всегда и везде тыкать ;

хотелось бы точно понимать действительно ли конструкция не выдаст ошибку в будущем
{ a=15 } тоже самое что { a=15; }



Честно говоря, я сам всегда и везде ставлю. Но в данном случае работает и без нее.
Напомню, что правильно - закрывать символом, в конце каждой инструкции. В таком случае ошибок в будущем не возникнет

В том примере что я привел - может работать и так (Можете скопировать код и запустить в Kibor'e).

Powered by ExBB FM 1.0 Final