10:06
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
        
Подвиcание SA-MP (2)
Max 20.02.2017 21:57
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 1 из 11
Модератор форума: AXE, Weddew 
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » switch.Можно написать "case 0..10",а как сделать от 0 до ∞ ?
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
Группа: Ангел Хранитель
Сообщений: 895
Награды: 20
Репутация: 846
Замечания: 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
Мастер джэдай
Группа: Продвинутые
Сообщений: 2650
Награды: 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
Мастер джэдай
Группа: Продвинутые
Сообщений: 2650
Награды: 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
Группа: Администратор
Сообщений: 8284
Награды: 111
Город: Санкт-Петербург
Репутация: 5935
Статус:
Заинтересовало, зачем это надо)


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
Репутация: 588
Замечания: 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.

Удачи в компиляции crazy

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
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » switch.Можно написать "case 0..10",а как сделать от 0 до ∞ ?
Страница 1 из 11
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM