Вт фев 20, 2018 13:22:49
практически всегда С++ сам сделает все необходимое при обычном сравнении одного типа с другим. я понять не могу: зачем может понадобиться делать это "врукопашную"?RealHann писал(а):если у меня 7 возможных типов, то 49 if-ов выглядят тупо. c A>B
Вт фев 20, 2018 13:47:02
Вт фев 20, 2018 14:16:16
ну кагбы для пользовательских типов в С++ можно переопределить операторы сравения.. и это как-то логичнее выглядит.Аlex писал(а):Если речь идёт о пользовательских типах
enum _cmp_type_e {
_cmp_char = 'C',
_cmp_ushort = 'U',
_cmp_short = 'S',
_cmp_uint = 'T',
_cmp_int = 'I',
_cmp_float = 'F'
};
Вт фев 20, 2018 14:19:00
Вт фев 20, 2018 14:19:32
Вт фев 20, 2018 14:57:02
Вт фев 20, 2018 19:56:55
Вт фев 20, 2018 22:36:11
Ср фев 21, 2018 06:50:07
вот-вотАlex писал(а):Ну и так как сравнивать нужно по-любому однотипные данные, значит приводим их к одному типу.
typedef enum _cmp_type_e {
_cmp_char = 'C',
_cmp_ushort = 'U',
_cmp_short = 'S',
_cmp_uint = 'T',
_cmp_int = 'I',
_cmp_float = 'F'
} cmp_t;
typedef struct{
cmp_t type;
uint8_t data[4];
} data_t;
float normalize(data_t *data){
switch(data->type){
case _cmp_char: return *(char*)data->data;
case _cmp_ushort: return *(unsigned short *)data->data;
...
}
}
int compare_data(data_t *data1, data_t *data2){
if(normalize(data1) > normalize(data2))
return 1;
else if(normalize(data1) < normalize(data2))
return -1;
else return 0;
}
Ср фев 21, 2018 09:17:59
Ср фев 21, 2018 09:22:10
давайте вместо кучи нравоучений вы тут продемонстрируете, как это будет элегантно, конкретным кодом? а то на словах все Львы Толстые...Ярослав555 писал(а):как это все элегантно построить
Ср фев 21, 2018 10:15:15
Ср фев 21, 2018 10:53:16
вот с этого надо было и начинать, а не с "лезете со своими ифами...". это во-первых.Ярослав555 писал(а):Ну да, без ифов не обойтись
Ср фев 21, 2018 11:17:14
Ср фев 21, 2018 12:39:04
Ср фев 21, 2018 13:55:46
прямо-таки напрашивается сравнение числа 1E-99 cо строкой "ваще нихрена!"Siarzhuk писал(а):Может всё-таки variant как универсальный тип данных обмена между всеми участниками экосистемы?
Ср фев 21, 2018 17:42:39
Ср фев 21, 2018 20:37:26
вообще-то я пытался намекнутть, что:Siarzhuk писал(а):Да и наличие в экосистеме акторов умеющих использовать лексический генератор таки преполагает
Ср фев 21, 2018 21:06:26
Ср фев 21, 2018 22:44:12
ARV писал(а):сравнивать можно строку со строкой, символ с символом, а число с числом