powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
25 сообщений из 236, страница 3 из 10
Очень интересны нюанс с оператором switch
    #39983589
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Можно попробовать в разных компилляторах создать декодер кодовой страницы (например win1251-UTF-16)
на case-switch и посмотреть как разные компилляторы соберут это. В линейный. Бинарный поиск. Или хеш-поиск.

Такой декодер он может и в обычный массив перевести где индексом будет 1251.

Может или переведет?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983595
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
petrav
пропущено...

Такой декодер он может и в обычный массив перевести где индексом будет 1251.

Может или переведет?

Можно проверить.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне щас некогда. Но я вечером сделаю тестовые сорцы. Сгенерить надо.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983659
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.sql.ru/forum/1134172/tyapnichnyy-koi-8r
тут уже делали перевод кодировок

оттуда:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
// Example program
#include <iostream>
#include <string>

const static int koi8r2unicode[] = {
  0x2500,0x2502,0x250C,0x2510,0x2514,0x2518,0x251C,0x2524,
  0x252C,0x2534,0x253C,0x2580,0x2584,0x2588,0x258C,0x2590,
  0x2591,0x2592,0x2593,0x2320,0x25A0,0x2219,0x221A,0x2248,
  0x2264,0x2265,0x00A0,0x2321,0x00B0,0x00B2,0x00B7,0x00F7,
  0x2550,0x2551,0x2552,0x0451,0x2553,0x2554,0x2555,0x2556,
  0x2557,0x2558,0x2559,0x255A,0x255B,0x255C,0x255D,0x255E,
  0x255F,0x2560,0x2561,0x0401,0x2562,0x2563,0x2564,0x2565,
  0x2566,0x2567,0x2568,0x2569,0x256A,0x256B,0x256C,0x00A9,
  0x044E,0x0430,0x0431,0x0446,0x0434,0x0435,0x0444,0x0433,
  0x0445,0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,
  0x043F,0x044F,0x0440,0x0441,0x0442,0x0443,0x0436,0x0432,
  0x044C,0x044B,0x0437,0x0448,0x044D,0x0449,0x0447,0x044A,
  0x042E,0x0410,0x0411,0x0426,0x0414,0x0415,0x0424,0x0413,
  0x0425,0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,
  0x041F,0x042F,0x0420,0x0421,0x0422,0x0423,0x0416,0x0412,
  0x042C,0x042B,0x0417,0x0428,0x042D,0x0429,0x0427,0x042A
};

int getUnicodeCanonical(int koi8r){
  if (koi8r<128) return koi8r;
  return koi8r2unicode[koi8r-128];
}

int getUnicodeSwitch(int koi8r)
{
    if (koi8r<128) return koi8r;
    switch(koi8r)
    {
    case 128:
        return 9472;
        break;
    case 129:
        return 9474;
        break;
    case 130:
        return 9484;
        break;
    case 131:
        return 9488;
        break;
    case 132:
        return 9492;
        break;
    case 133:
        return 9496;
        break;
    case 134:
        return 9500;
        break;
    case 135:
        return 9508;
        break;
    case 136:
        return 9516;
        break;
    case 137:
        return 9524;
        break;
    case 138:
        return 9532;
        break;
    case 139:
        return 9600;
        break;
    case 140:
        return 9604;
        break;
    case 141:
        return 9608;
        break;
    case 142:
        return 9612;
        break;
    case 143:
        return 9616;
        break;
    case 144:
        return 9617;
        break;
    case 145:
        return 9618;
        break;
    case 146:
        return 9619;
        break;
    case 147:
        return 8992;
        break;
    case 148:
        return 9632;
        break;
    case 149:
        return 8729;
        break;
    case 150:
        return 8730;
        break;
    case 151:
        return 8776;
        break;
    case 152:
        return 8804;
        break;
    case 153:
        return 8805;
        break;
    case 154:
        return 160;
        break;
    case 155:
        return 8993;
        break;
    case 156:
        return 176;
        break;
    case 157:
        return 178;
        break;
    case 158:
        return 183;
        break;
    case 159:
        return 247;
        break;
    case 160:
        return 9552;
        break;
    case 161:
        return 9553;
        break;
    case 162:
        return 9554;
        break;
    case 163:
        return 1105;
        break;
    case 164:
        return 9555;
        break;
    case 165:
        return 9556;
        break;
    case 166:
        return 9557;
        break;
    case 167:
        return 9558;
        break;
    case 168:
        return 9559;
        break;
    case 169:
        return 9560;
        break;
    case 170:
        return 9561;
        break;
    case 171:
        return 9562;
        break;
    case 172:
        return 9563;
        break;
    case 173:
        return 9564;
        break;
    case 174:
        return 9565;
        break;
    case 175:
        return 9566;
        break;
    case 176:
        return 9567;
        break;
    case 177:
        return 9568;
        break;
    case 178:
        return 9569;
        break;
    case 179:
        return 1025;
        break;
    case 180:
        return 9570;
        break;
    case 181:
        return 9571;
        break;
    case 182:
        return 9572;
        break;
    case 183:
        return 9573;
        break;
    case 184:
        return 9574;
        break;
    case 185:
        return 9575;
        break;
    case 186:
        return 9576;
        break;
    case 187:
        return 9577;
        break;
    case 188:
        return 9578;
        break;
    case 189:
        return 9579;
        break;
    case 190:
        return 9580;
        break;
    case 191:
        return 169;
        break;
    case 192:
        return 1102;
        break;
    case 193:
        return 1072;
        break;
    case 194:
        return 1073;
        break;
    case 195:
        return 1094;
        break;
    case 196:
        return 1076;
        break;
    case 197:
        return 1077;
        break;
    case 198:
        return 1092;
        break;
    case 199:
        return 1075;
        break;
    case 200:
        return 1093;
        break;
    case 201:
        return 1080;
        break;
    case 202:
        return 1081;
        break;
    case 203:
        return 1082;
        break;
    case 204:
        return 1083;
        break;
    case 205:
        return 1084;
        break;
    case 206:
        return 1085;
        break;
    case 207:
        return 1086;
        break;
    case 208:
        return 1087;
        break;
    case 209:
        return 1103;
        break;
    case 210:
        return 1088;
        break;
    case 211:
        return 1089;
        break;
    case 212:
        return 1090;
        break;
    case 213:
        return 1091;
        break;
    case 214:
        return 1078;
        break;
    case 215:
        return 1074;
        break;
    case 216:
        return 1100;
        break;
    case 217:
        return 1099;
        break;
    case 218:
        return 1079;
        break;
    case 219:
        return 1096;
        break;
    case 220:
        return 1101;
        break;
    case 221:
        return 1097;
        break;
    case 222:
        return 1095;
        break;
    case 223:
        return 1098;
        break;
    case 224:
        return 1070;
        break;
    case 225:
        return 1040;
        break;
    case 226:
        return 1041;
        break;
    case 227:
        return 1062;
        break;
    case 228:
        return 1044;
        break;
    case 229:
        return 1045;
        break;
    case 230:
        return 1060;
        break;
    case 231:
        return 1043;
        break;
    case 232:
        return 1061;
        break;
    case 233:
        return 1048;
        break;
    case 234:
        return 1049;
        break;
    case 235:
        return 1050;
        break;
    case 236:
        return 1051;
        break;
    case 237:
        return 1052;
        break;
    case 238:
        return 1053;
        break;
    case 239:
        return 1054;
        break;
    case 240:
        return 1055;
        break;
    case 241:
        return 1071;
        break;
    case 242:
        return 1056;
        break;
    case 243:
        return 1057;
        break;
    case 244:
        return 1058;
        break;
    case 245:
        return 1059;
        break;
    case 246:
        return 1046;
        break;
    case 247:
        return 1042;
        break;
    case 248:
        return 1068;
        break;
    case 249:
        return 1067;
        break;
    case 250:
        return 1047;
        break;
    case 251:
        return 1064;
        break;
    case 252:
        return 1069;
        break;
    case 253:
        return 1065;
        break;
    case 254:
        return 1063;
        break;
    case 255:
        return 1066;
        break;
    }
}


int main()
{
    getUnicodeCanonical( 150 );
    getUnicodeSwitch( 150 );

    return 0;
}


https://godbolt.org/z/h5aKza
gcc 10 switch заменил на таблицу
Код: plaintext
1.
movswl 0x8049f20(%eax,%eax,1),%eax
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983663
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Как-то раз я гуглил в интернетах что-то по Oracle. И нашёл.... свой собственный блджад вопрос 10 летней давности
здесь в скруле и ответ к нему. Вот это был сюрприз мать ево.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983986
m_Sla,

Какой страшный switch. Вот красивый, но работает идентично.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
int CompactSwitch(int koi8r) {
    switch(koi8r) {
    case 128: return 9472;
    case 129: return 9474;
    case 130: return 9484;
    case 131: return 9488;
    case 132: return 9492;
    case 133: return 9496;
    case 134: return 9500;
    case 135: return 9508;
    case 136: return 9516;
    case 137: return 9524;
    case 138: return 9532;
    case 139: return 9600;
    case 140: return 9604;
    case 141: return 9608;
    case 142: return 9612;
    case 143: return 9616;
    case 144: return 9617;
    case 145: return 9618;
    case 146: return 9619;
    case 147: return 8992;
    case 148: return 9632;
    case 149: return 8729;
    case 150: return 8730;
    case 151: return 8776;
    case 152: return 8804;
    case 153: return 8805;
    case 154: return 160;
    case 155: return 8993;
    case 156: return 176;
    case 157: return 178;
    case 158: return 183;
    case 159: return 247;
    case 160: return 9552;
    case 161: return 9553;
    case 162: return 9554;
    case 163: return 1105;
    case 164: return 9555;
    case 165: return 9556;
    case 166: return 9557;
    case 167: return 9558;
    case 168: return 9559;
    case 169: return 9560;
    case 170: return 9561;
    case 171: return 9562;
    case 172: return 9563;
    case 173: return 9564;
    case 174: return 9565;
    case 175: return 9566;
    case 176: return 9567;
    case 177: return 9568;
    case 178: return 9569;
    case 179: return 1025;
    case 180: return 9570;
    case 181: return 9571;
    case 182: return 9572;
    case 183: return 9573;
    case 184: return 9574;
    case 185: return 9575;
    case 186: return 9576;
    case 187: return 9577;
    case 188: return 9578;
    case 189: return 9579;
    case 190: return 9580;
    case 191: return 169;
    case 192: return 1102;
    case 193: return 1072;
    case 194: return 1073;
    case 195: return 1094;
    case 196: return 1076;
    case 197: return 1077;
    case 198: return 1092;
    case 199: return 1075;
    case 200: return 1093;
    case 201: return 1080;
    case 202: return 1081;
    case 203: return 1082;
    case 204: return 1083;
    case 205: return 1084;
    case 206: return 1085;
    case 207: return 1086;
    case 208: return 1087;
    case 209: return 1103;
    case 210: return 1088;
    case 211: return 1089;
    case 212: return 1090;
    case 213: return 1091;
    case 214: return 1078;
    case 215: return 1074;
    case 216: return 1100;
    case 217: return 1099;
    case 218: return 1079;
    case 219: return 1096;
    case 220: return 1101;
    case 221: return 1097;
    case 222: return 1095;
    case 223: return 1098;
    case 224: return 1070;
    case 225: return 1040;
    case 226: return 1041;
    case 227: return 1062;
    case 228: return 1044;
    case 229: return 1045;
    case 230: return 1060;
    case 231: return 1043;
    case 232: return 1061;
    case 233: return 1048;
    case 234: return 1049;
    case 235: return 1050;
    case 236: return 1051;
    case 237: return 1052;
    case 238: return 1053;
    case 239: return 1054;
    case 240: return 1055;
    case 241: return 1071;
    case 242: return 1056;
    case 243: return 1057;
    case 244: return 1058;
    case 245: return 1059;
    case 246: return 1046;
    case 247: return 1042;
    case 248: return 1068;
    case 249: return 1067;
    case 250: return 1047;
    case 251: return 1064;
    case 252: return 1069;
    case 253: return 1065;
    case 254: return 1063;
    case 255: return 1066;
    default: return koi8r;
    }
}

...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983990
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная история. Почему ASCII <= 127 ? Почему не <= 255 ? Почему char == signed char ?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983992
petrav
Интересная история. Почему ASCII <= 127 ?


https://tools.ietf.org/html/rfc1489

petrav
Почему не <= 255 ?


Значит мой switch компактный не содержит ошибок.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39983993
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный

Значит мой switch компактный не содержит ошибок.

Да вы тут ни причём. Возможно пространство >127 было выделено под локальные кодировки. Но, во-первых, меня смущает такая прозорливость. Во-вторых почему char знаковый тип? Это противоречит предполагаемой прозорливости.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984009
vAH_O6Vg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petrav
Да вы тут ни причём. Возможно пространство >127 было выделено под локальные кодировки. Но, во-первых, меня смущает такая прозорливость. Во-вторых почему char знаковый тип? Это противоречит предполагаемой прозорливости.

char такой, какой требуется по стандарту.
An object declared as type char is large enough to store any member of the basic execution character
set. If a member of the basic execution character set is stored in a char object, its value is guaranteed
to be nonnegative. If any other character is stored in a char object, the resulting value is implemen-
tation-defined but shall be within the range of values that can be represented in that type.
The three types char, signed char, and unsigned char are collectively called the character types.
The implementation shall define char to have the same range, representation, and behavior as either
signed char or unsigned char.
Знаковость у него определяется производителем компилятора.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984029
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный,

Да. Согласен. Break там был лишний.
Но тема референсного топика была не о switch,
А о минимизации булевых функций. Поэтому мы не акцентировали на этом сильно.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984072
ВсеРазумный
m_Sla,

Какой страшный switch. Вот красивый, но работает идентично.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
int CompactSwitch(int koi8r) {
    switch(koi8r) {
    case 128: return 9472;
    case 129: return 9474;
    case 130: return 9484;
    case 131: return 9488;
    case 132: return 9492;
    case 133: return 9496;
    case 134: return 9500;
    case 135: return 9508;
    case 136: return 9516;
    case 137: return 9524;
    case 138: return 9532;
    case 139: return 9600;
    case 140: return 9604;
    case 141: return 9608;
    case 142: return 9612;
    case 143: return 9616;
    case 144: return 9617;
    case 145: return 9618;
    case 146: return 9619;
    case 147: return 8992;
    case 148: return 9632;
    case 149: return 8729;
    case 150: return 8730;
    case 151: return 8776;
    case 152: return 8804;
    case 153: return 8805;
    case 154: return 160;
    case 155: return 8993;
    case 156: return 176;
    case 157: return 178;
    case 158: return 183;
    case 159: return 247;
    case 160: return 9552;
    case 161: return 9553;
    case 162: return 9554;
    case 163: return 1105;
    case 164: return 9555;
    case 165: return 9556;
    case 166: return 9557;
    case 167: return 9558;
    case 168: return 9559;
    case 169: return 9560;
    case 170: return 9561;
    case 171: return 9562;
    case 172: return 9563;
    case 173: return 9564;
    case 174: return 9565;
    case 175: return 9566;
    case 176: return 9567;
    case 177: return 9568;
    case 178: return 9569;
    case 179: return 1025;
    case 180: return 9570;
    case 181: return 9571;
    case 182: return 9572;
    case 183: return 9573;
    case 184: return 9574;
    case 185: return 9575;
    case 186: return 9576;
    case 187: return 9577;
    case 188: return 9578;
    case 189: return 9579;
    case 190: return 9580;
    case 191: return 169;
    case 192: return 1102;
    case 193: return 1072;
    case 194: return 1073;
    case 195: return 1094;
    case 196: return 1076;
    case 197: return 1077;
    case 198: return 1092;
    case 199: return 1075;
    case 200: return 1093;
    case 201: return 1080;
    case 202: return 1081;
    case 203: return 1082;
    case 204: return 1083;
    case 205: return 1084;
    case 206: return 1085;
    case 207: return 1086;
    case 208: return 1087;
    case 209: return 1103;
    case 210: return 1088;
    case 211: return 1089;
    case 212: return 1090;
    case 213: return 1091;
    case 214: return 1078;
    case 215: return 1074;
    case 216: return 1100;
    case 217: return 1099;
    case 218: return 1079;
    case 219: return 1096;
    case 220: return 1101;
    case 221: return 1097;
    case 222: return 1095;
    case 223: return 1098;
    case 224: return 1070;
    case 225: return 1040;
    case 226: return 1041;
    case 227: return 1062;
    case 228: return 1044;
    case 229: return 1045;
    case 230: return 1060;
    case 231: return 1043;
    case 232: return 1061;
    case 233: return 1048;
    case 234: return 1049;
    case 235: return 1050;
    case 236: return 1051;
    case 237: return 1052;
    case 238: return 1053;
    case 239: return 1054;
    case 240: return 1055;
    case 241: return 1071;
    case 242: return 1056;
    case 243: return 1057;
    case 244: return 1058;
    case 245: return 1059;
    case 246: return 1046;
    case 247: return 1042;
    case 248: return 1068;
    case 249: return 1067;
    case 250: return 1047;
    case 251: return 1064;
    case 252: return 1069;
    case 253: return 1065;
    case 254: return 1063;
    case 255: return 1066;
    default: return koi8r;
    }
}



а не лучше ли "а,и,е" вытащить вперёд и вообще отсортировать по частоте?
default: return koi8r;
это совершенно точно надо в начало ставить.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984126
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Почему ASCII <= 127 ?
Д.Кнудт, "Всё про TeX" (неточная цитата): "... необходимость более 128 символов в общецелевых приложениях всё ещё неочевидна". ANSI, 1963 год.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984139
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не надо забывать про терминалы с семибитным RS232.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984180
Алексей Роза

а не лучше ли "а,и,е" вытащить вперёд и вообще отсортировать по частоте?


Нет, потому что всё равно конвертируется в массив такой switch А дальше он сам его отсортирует.


Алексей Роза

это совершенно точно надо в начало ставить.


Без разницы где ему висеть. Он всё равно проверяет диапазон входного массива.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984214
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
И не надо забывать про терминалы с семибитным RS232.
Ну так потому и "всё ещё неочевидна" - когда у вас 75 бод, то передача восьми бит вместо семи выглядит довольно накладной.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984284
ВсеРазумный
Нет, потому что всё равно конвертируется в массив такой switch А дальше он сам его отсортирует.

в смысле "сам"?
т.е. он непременно должен каждый раз перебирать 127 значений и никак это не изменить?
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984288
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С точки зрения теорий Шеннона английский текст обладает плонтностью 1.3 бит на символ безотносительно
кодировки. Соотв если апач хорошо жмёт контент в gzip - мы можем ожидать неизменный результат и для 8
и для 16 и для 32 бит на символ.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984291
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
С точки зрения теорий Шеннона английский текст обладает плонтностью 1.3 бит на символ безотносительно
кодировки. Соотв если апач хорошо жмёт контент в gzip - мы можем ожидать неизменный результат и для 8
и для 16 и для 32 бит на символ.

Вот поэтому и нужен не utf-8, а uc-32.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984294
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Вот поэтому и нужен не utf-8, а uc-32.
Во-первых любые UCS-варианты уже "deprecated".
Во-вторых, вы так и не можете понять простой вещи: составные символы останутся составными в любой кодировке. Фиксированное число бит у этой кодировки или переменное - без разницы.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984296
mayton
Соотв если апач хорошо жмёт контент в gzip

у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие, потом уже незначительный рост
а вот затраты проца растут значительно
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984298
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
petrav
Вот поэтому и нужен не utf-8, а uc-32.
Во-первых любые UCS-варианты уже "deprecated".
Во-вторых, вы так и не можете понять простой вещи: составные символы останутся составными в любой кодировке. Фиксированное число бит у этой кодировки или переменное - без разницы.

Я это отлично понимаю.

Давайте по другому. Допустим у нас UC-32. Приведите пример составного символа, будем смотреть.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984300
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
mayton
Соотв если апач хорошо жмёт контент в gzip

у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие, потом уже незначительный рост
а вот затраты проца растут значительно

Я просто акцентирую внимание на том что для информационной энтропии разрядность источника - не играет роли.
Для энтропии просто интересна частота неких абстрактных символов.

Кстати эта вся теория рождалась задолго до появления битов и байтов . Клод Шеннон - знатный старец среди
кибернетиков и электротехников.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984305
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Приведите пример составного символа, будем смотреть.
Для кирилицы? "Ё" и "Й". Да, каждый из этих символов имеет "собственный" код, но вы не может запретить "всему миру" использовать нормализацию с полной декомпозицией.
Где это проявляется на практике? Например, при отображении этого самого "ивана-краткого" в Far3.
...
Рейтинг: 0 / 0
Очень интересны нюанс с оператором switch
    #39984308
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Роза
у gzip есть 0-9 уровни сжатия, на 0 самое существенное различие
Использовать термин "сжатие" для "store only" - сильный ход. "Мне бы такое зрение - видеть Никого, да ещё на таком расстоянии".
...
Рейтинг: 0 / 0
25 сообщений из 236, страница 3 из 10
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очень интересны нюанс с оператором switch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]