Есть такой код:
QString str;
unsigned short varU = 0xffff;
short var = 0xffff;
str.sprintf( "%d", varU ); // str = "65535"
str.sprintf( "%d", var ); // str = "-1"
Как sprintf понимает, что в одном случае надо создать строку "65535", а в другом "-1"??
Смотрел исходники sprintf:
...
QString subst;
switch (*c) {
case 'd':
case 'i': {
qint64 i;
switch (length_mod) {
case lm_none: i = va_arg(ap, int); break;
case lm_hh: i = va_arg(ap, int); break;
case lm_h: i = va_arg(ap, int); break;
case lm_l: i = va_arg(ap, long int); break;
case lm_ll: i = va_arg(ap, qint64); break;
case lm_j: i = va_arg(ap, long int); break;
case lm_z: i = va_arg(ap, size_t); break;
case lm_t: i = va_arg(ap, int); break;
default: i = 0; break;
}
subst = locale.d()->longLongToString(i, precision, 10, width, flags);
...
но для себя ответ так и не нашел)
Люди!! Помогите разобраться!