|
switch.Можно написать "case 0..10",а как сделать от 0 до ∞ ?
|
|
| Крендель | Дата: Суббота, 11.08.2012, 10:48 | Сообщение # 1 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| switch. Можно написат "case 0..10", а как сделать до ∞ ?
生き死に
Сообщение отредактировал Крендель - Суббота, 11.08.2012, 10:50 |
| |
|
|
| zEsc | Дата: Суббота, 11.08.2012, 11:20 | Сообщение # 2 |
|
Global Elite
Группа:
Ангел Хранитель
Сообщений: 896
Награды: 20
Репутация: 856
Замечания: 0%
Статус: 
| как вариант использовать default
|
| |
|
|
| Крендель | Дата: Суббота, 11.08.2012, 11:20 | Сообщение # 3 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 216
Награды: 0
Город: :дороГ
Репутация: -8
Замечания: 20%
Статус: 
| хм. в моем случае помог "default" но все равно интересно можно ли указать от 0 до бесконечности ?
生き死に
|
| |
|
|
| Satellite | Дата: Суббота, 11.08.2012, 11:37 | Сообщение # 4 |
|
Местный
Группа:
Продвинутые
Сообщений: 622
Награды: 10
Город: Хмельницкий
Замечания: 20%
Статус: 
| switch — цикл. А бесконечные циклы к добру никогда не приводили. Используй условный оператор if.
|
| |
|
|
| ZiGGi | Дата: Суббота, 11.08.2012, 12:00 | Сообщение # 5 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (Крендель) но все равно интересно можно ли указать от 0 до бесконечности ? Можно так: case 0..2147483647: {} 2147483647 - максимально большое число в Pawn.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
Сообщение отредактировал ZiGGi - Суббота, 11.08.2012, 12:01 |
| |
|
|
| Klebit | Дата: Суббота, 11.08.2012, 16:46 | Сообщение # 6 |
|
Уверенный в себе
Группа:
Пользователи
Сообщений: 265
Награды: 0
Город: None
Репутация: -31
Замечания: 60%
Статус: 
| Quote (Satellite) switch — цикл. А бесконечные циклы к добру никогда не приводили. Используй условный оператор if. Такое ляпнуть, это мощно
|
| |
|
|
| Дикий_Билли | Дата: Суббота, 11.08.2012, 16:51 | Сообщение # 7 |
|
Новенький
Группа:
Пользователи
Сообщений: 48
Награды: 2
Город: 123123123
Репутация: 29
Замечания: 100%
Статус: 
| Quote (Klebit) Такое ляпнуть, это мощно Модерировано, свитч относиться к циклам!11
|
| |
|
|
| Klebit | Дата: Суббота, 11.08.2012, 16:54 | Сообщение # 8 |
|
Уверенный в себе
Группа:
Пользователи
Сообщений: 265
Награды: 0
Город: None
Репутация: -31
Замечания: 60%
Статус: 
| Quote (Дикий_Билли) Quote (Klebit) Такое ляпнуть, это мощно
Модерировано, свитч относиться к циклам!11 омг, услышали от мудака какого то , теперь давай твердить. Ну если он говорит, что бесконечный циклы к хорошему не приведет, запусти его на 1 и на 2147483647, по его логике время выполнения будет разное
|
| |
|
|
| ZiGGi | Дата: Воскресенье, 12.08.2012, 22:11 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Quote (Дикий_Билли) Модерировано, свитч относиться к циклам!11 Ты не прав, читай доки Pawn. В Pawn switch/case - это фактически if/else.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Alcoholik | Дата: Воскресенье, 12.08.2012, 23:28 | Сообщение # 10 |
|
Мастер джэдай
Группа:
Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус: 
| Заинтересовало, зачем это надо)
if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die(); Мониторинг sa:mp серверов Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
|
| |
|
|
| Satellite | Дата: Вторник, 09.10.2012, 23:39 | Сообщение # 11 |
|
Местный
Группа:
Продвинутые
Сообщений: 622
Награды: 10
Город: Хмельницкий
Замечания: 20%
Статус: 
| Quote (Klebit) Такое ляпнуть, это мощно Quote (Дикий_Билли) Модерировано, свитч относиться к циклам!11
Объясните, почему if & else if с перебором диапазона значений будут работать быстрее, чем switch?
Сообщение отредактировал Satellite - Среда, 10.10.2012, 00:03 |
| |
|
|
| Morozzzko | Дата: Среда, 10.10.2012, 00:15 | Сообщение # 12 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2179
Награды: 40
Город: Moscow
Репутация: 590
Замечания: 0%
Статус: 
| Quote (Satellite) Объясните, почему if & else if с перебором диапазона значений будут работать быстрее, чем switch? switch(a) { case 5..10: { } }
эквивалентно if(a == 5 || a == 6 || a == 7 || a == 8 ...
if(a >= 5 && a <= 10) - будет побыстрее и покрасивше
Главный программист в Malefic Entertainment.
|
| |
|
|
| AirKite | Дата: Среда, 10.10.2012, 01:21 | Сообщение # 13 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус: 
| Quote (Крендель) switch. Можно написат "case 0..10", а как сделать до ∞ ? Не в коем случае нельзя. Такое не было бы возможно скомпилировать.
И вообще зачем оно нужно? Услышал где то что switch работает быстрей? Так он работает быстрей только в умелых руках... Но нет же, вы и со switch умудряетесь извращаться.
Пример кривого использования: Code new a = 25000; new timestart = GetTickCount(); for(new i; i < 1000; i++) { switch(a) { case 0..25000: { new a = 1; a = a + 1; } } } printf("Switch Time: %d ms", GetTickCount()-timestart); timestart = GetTickCount(); for(new i; i < 1000; i++) { if(a >= 0 && a <= 25000) { new a = 1; a = a + 1; } } printf("IF Time: %d ms", GetTickCount()-timestart); Вывод: Code Switch Time: 159 ms IF Time: 1 ms
Quote (ZiGGi) Можно так: case 0..2147483647: {} 2147483647 - максимально большое число в Pawn. Удачи в компиляции
Quote (Satellite) Объясните, почему if & else if с перебором диапазона значений будут работать быстрее, чем switch? Кто тебе такое сказал? switch будет работать быстрей в случае с перебором. Но Switch не позволяет ставить условия "меньше, больше" и т.д. т.е. в случаях огромных диапазонов чисел, лучше использовать if(a >= 0 && a <= 999999999) (это не перебор) нежели case 0..999999999. В принципе Morozzzko уже объяснил в краце чему диапазон в case эквивалентен.
[1337GAMES] Easy RP (SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)
Jabber: airkite@qip.ru [Addon] QuickBinder [FS] Online Players Record
Сообщение отредактировал AirKite - Среда, 10.10.2012, 01:23 |
| |
|
|
| Satellite | Дата: Суббота, 13.10.2012, 21:06 | Сообщение # 14 |
|
Местный
Группа:
Продвинутые
Сообщений: 622
Награды: 10
Город: Хмельницкий
Замечания: 20%
Статус: 
| Quote (AirKite) Кто тебе такое сказал? switch будет работать быстрей в случае с перебором. Но Switch не позволяет ставить условия "меньше, больше" и т.д. т.е. в случаях огромных диапазонов чисел, лучше использовать if(a >= 0 && a <= 999999999) (это не перебор) нежели case 0..999999999. В принципе Morozzzko уже объяснил в краце чему диапазон в case эквивалентен. Я это спросил в ответ на «switch не цикл!111», ибо если бы это был не цикл, то почему он медленней при 0..999999...?. Я знаю, что и почему быстрее. На павно.ру это обсуждалось. ) Quote (AirKite) switch будет работать быстрей в случае с перебором. http://pawno.ru/showthr....t585648 Вы не так поняли мой вопрос.
Сообщение отредактировал Satellite - Суббота, 13.10.2012, 21:12 |
| |
|
|
| AirKite | Дата: Суббота, 13.10.2012, 22:14 | Сообщение # 15 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус: 
| Satellite, ок, давай по полочкам Я тебе также скажу, что switch это не цикл.
Quote (Satellite) Я это спросил в ответ на «switch не цикл!111», ибо если бы это был не цикл, то почему он медленней при 0..999999...? switch работает быстрее if. проверенно и доказано не раз, потому что работает иначе чем if. case 0..999999 это быстрее чем 1000000 if.
Quote (Satellite) Вы не так поняли мой вопрос. В тесте 2501(case) и 10(if). т.е. case больше в 25 раз. Quote Test Switch : 19 (2501) Test If : 2 (10) Switch : 19/2501=0,00759 If :2/10=0,2
Ещё раз более доходчиво. У switch нет в case диапазонов... если задал case 0..999 то компилятор просто клонирует case, т.е. тоже самое что и: case 0:, case 1:, case 2:, case 3:, case 4:, case 5:, case 6:, case 7:, case 8: ... case 998:, case 999:. (на уровне кода). Если уж и обзывать switch не своим именем, то можно было бы назвать его макросом. Но никак не циклом.
[1337GAMES] Easy RP (SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)
Jabber: airkite@qip.ru [Addon] QuickBinder [FS] Online Players Record
|
| |
|
|