Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

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

> Без описания
Redear
Отправлено: 14 Января, 2023 - 18:27:15
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




Задался вопросом.
Если в конструкции { .. } 1 действие, будет ли ошибкой компилятора кибор не ставить точку с запятой?

CODE:

{
a=12
}


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



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


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

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


прошу подсказки. спасибо

(Отредактировано автором: 14 Января, 2023 - 18:34:11)

 
 Top
Zireael
Отправлено: 14 Января, 2023 - 18:44:02
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




Лучше не нарушать синтаксис.
Если действие одно, то можно не ставить фигурные скобки.
Оба кода равнозначны:
CODE:
if(1==1)messagebox("true");

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

Так тоже можно:
CODE:
if(1==1)messagebox("true");
else messagebox("false");
 
 Top
Nik2
Отправлено: 14 Января, 2023 - 18:44:15
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 17
Дата рег-ции: Дек. 2022  
Репутация: 0




помоему ; обязательна.
 
 Top
OKStyle
Отправлено: 14 Января, 2023 - 20:25:33
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 81
Дата рег-ции: Сент. 2022  
Репутация: 6




Да, может возникнуть проблема.
Нехватка или лишние ; могут привести к тому, что кибор будет выдавать непонятные ошибки. Особенно, если программа большая.
Сам сегодня попался почти на такой же ситуации, искал часа полтора. Только потом понял в чем дело.


Как сказал один умный человек
 Zireael пишет:
Лучше не нарушать синтаксис.
 
 Top
Redear
Отправлено: 14 Января, 2023 - 23:27:56
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




 Zireael пишет:
if(1==1)messagebox("true"Подмигивание;
else messagebox("false"Подмигивание;


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

или после перехода по метке тоже нельзя ставить ;
 
 Top
OKStyle
Отправлено: 14 Января, 2023 - 23:39:13
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 81
Дата рег-ции: Сент. 2022  
Репутация: 6




Наоборот. Ошибка будет, если не поставишь знак.

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

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

Пример ниже. (В блоках, который начинаются с { и заканчиваются } - ставить точку с запятой не обязательно. В блоках, каждая строка автоматически заканчивается этим символом
CODE:
if(1==1)
{
messagebox("Текст высветится без ошибок")
}

(Отредактировано автором: 14 Января, 2023 - 23:54:10)

 
 Top
Zireael
Отправлено: 14 Января, 2023 - 23:57:42
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
и еще меня интересует вопрос, если мы переходим с goto по метке например с:
то после перехода я могу сразу поставить ;

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

Нет, обязательно. Напишет ошибку:
CODE:
if(1==1)
{
messagebox("111")
messagebox("222")
}
 
 Top
OKStyle
Отправлено: 15 Января, 2023 - 00:20:39
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 81
Дата рег-ции: Сент. 2022  
Репутация: 6




[quote=Zireael]
 Цитата:

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


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

В моем примере именно одна строка, поэтому должно обработать нормально.

(Отредактировано автором: 15 Января, 2023 - 00:26:15)

 
 Top
Redear
Отправлено: 15 Января, 2023 - 00:28:07
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 193
Дата рег-ции: Июль 2022  
Репутация: 0




так вот это и был первый основной вопрос.
OKSTYLE пишет, что если в скобках одна строка, то ошибки не будет, если ; не ставить
Zirael пишет, что нужно, всегда и везде тыкать ;

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

(Отредактировано автором: 15 Января, 2023 - 00:29:00)

 
 Top
OKStyle
Отправлено: 15 Января, 2023 - 00:39:36
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 81
Дата рег-ции: Сент. 2022  
Репутация: 6




 Redear пишет:
так вот это и был первый основной вопрос.
OKSTYLE пишет, что если в скобках одна строка, то ошибки не будет, если ; не ставить
Zirael пишет, что нужно, всегда и везде тыкать ;

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



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

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

(Отредактировано автором: 15 Января, 2023 - 00:48:24)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by