- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
switch (a) {
case 12345:
return 0;
case 14523:
return 1;
case 102543:
return 2;
case 104325:
return 3;
case 243051:
return 4;
case 245130:
return 5;
case 350214:
return 6;
case 351402:
return 7;
case 423150:
return 8;
case 425031:
return 9;
case 530412:
return 10;
case 531204:
return 11;
}
return -1;
codemonkey 07.03.2016 18:25 # +2
kegdan 07.03.2016 19:06 # +2
(a/10000)*2 + (((a/1000)%10) == 1 ||((a/1000)%10) >3)?1:0;
Bobik 07.03.2016 19:25 # 0
kegdan 07.03.2016 21:40 # +5
Xom94ok 08.03.2016 00:21 # +1
guest 08.03.2016 12:37 # +2
Фтопку.
nihau 08.03.2016 17:22 # 0
}
bormand 08.03.2016 17:34 # +4
inkanus-gray 08.03.2016 18:51 # 0
А есть другие примеры опасного кода, не выдающего ворнинги?
bormand 08.03.2016 19:01 # 0
nihau 09.03.2016 14:49 # 0
https://msdn.microsoft.com/en-us/library/7hw7c1he.aspx
Bobik 09.03.2016 17:29 # +5
kegdan 09.03.2016 18:15 # 0
bormand 09.03.2016 18:42 # 0
Bobik 07.03.2016 22:58 # 0
3_14dar 07.03.2016 23:01 # +1
Bobik 07.03.2016 23:07 # +2
Круче по операциям только лукап в таблице по n / 1000, но не факт, что исполнится лучше -- один джамп по указателю из памяти в непредсказуемое место и два обычных джампа или всё-таки пять обычных джампов.
3_14dar 07.03.2016 23:15 # 0
Bobik 07.03.2016 23:36 # 0
3_14dar 08.03.2016 01:05 # +1
Soul_re@ver 08.03.2016 01:10 # +3
http://goo.gl/Yim0ZY
inkanus-gray 08.03.2016 12:53 # 0
3_14dar 08.03.2016 19:19 # 0
То есть, гарантий никаких не дается и по сути это столь любимое бормондом UB?
defecate-plusplus 08.03.2016 19:22 # +1
ещё блять не хватало, чтобы в стандарте навязывалась реализация свича или ограничивалась работа duff device
Bobik 08.03.2016 19:30 # +2
Например, для какого-нибудь switch (a) { case 1: return 2; case 2: return 3; case 3: return 4; default: return -1; } вполне соответствовать стандарту будет превращение в return 1 <= a && a <= 3 ? a+1 : -1;
kurwa 08.03.2016 20:18 # 0
Bobik 08.03.2016 20:31 # 0
3_14dar 08.03.2016 23:07 # 0
Bobik 08.03.2016 23:13 # 0
И даже про вычислительную сложность сложения, умножения и деления там нет ни слова.
Soul_re@ver 08.03.2016 23:15 # 0
Bobik 08.03.2016 23:16 # 0
3_14dar 09.03.2016 00:06 # 0
3_14dar 09.03.2016 00:05 # 0
Bobik 09.03.2016 00:19 # +3
3_14dar 09.03.2016 00:47 # +1
Bobik 09.03.2016 00:55 # 0
Например, знаю кучу людей, у которых был первым языком питон, и которые второй минимум в массиве ищут сортировкой. И даже не задумываются, что что-то тут не так.
3_14dar 09.03.2016 02:04 # 0
>у которых был первым языком питон
Зачем ты так...
>и которые второй минимум в массиве ищут сортировкой
А чо такое? O(n*logn ) же
kegdan 09.03.2016 10:56 # +4
kurwa 09.03.2016 01:01 # +1
2) Про студию/гцц/шланг доподлинно известно, что они свитч оптимизируют. А это 99,99% платформ. ICC, у которого вся писечка в оптимизациях, тоже наверняка делает настолько быстрый свитч, насколько возможно.
3) Нужно верить в свой компилятор. Это один из столпов с++.
3_14dar 09.03.2016 02:05 # −1
Нужно верить в Штольмана и трухвальца - это один из столпов прыщей.
3_14dar 08.03.2016 23:06 # +1
3_14dar 09.03.2016 00:06 # −1
guest 07.03.2016 23:40 # 0
Bobik 07.03.2016 23:51 # +1
guest 11.03.2016 17:54 # 0
Soul_re@ver 11.03.2016 18:03 # 0
guest 11.03.2016 18:20 # 0
Soul_re@ver 11.03.2016 18:25 # 0
доволен?
guest 11.03.2016 18:29 # 0
bormand 08.03.2016 16:35 # +1
dxd 08.03.2016 00:27 # +1