- 1
- 2
- 3
- 4
template<typename T>
constexpr size_t printed_sizeof() {
return log10(sizeof(T)) + 1;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
template<typename T>
constexpr size_t printed_sizeof() {
return log10(sizeof(T)) + 1;
}
Осваиваем новые стандарты.
someone 19.03.2013 15:46 # 0
roman-kashitsyn 19.03.2013 15:55 # 0
someone 19.03.2013 15:56 # +2
defecate-plusplus 19.03.2013 17:32 # +1
может, хотелось "сколько символов максимум займет вот этот вот тип?"
bormand 19.03.2013 17:41 # +1
Но хз зачем это может понадобиться. Размеры типов не так уж часто выводят.
defecate-plusplus 19.03.2013 17:57 # 0
зы. до меня дошло что ты написал - действительно в ОП получается размер этого типа, тем более неясно
табличный вывод с отступами?
Yuuri 20.03.2013 11:24 # 0
char buf[ 6 ];
snprintf( buf, sizeof( buf ), "%u", num );
buffer << buf;
return buffer;
}
friend buffer & operator << ( Buffer &buffer, uint64_t num ) throw (BufferException)
{
char buf[ 21 ];
snprintf( buf, sizeof( buf ), "%"PRIu64, num );
buffer << buf;
return buffer;
}[/code]
что в общем-то достойно отдельного г-поста. Ну я и предложил ребятам обобщённый вариант.
defecate-plusplus 20.03.2013 11:57 # +4
someone 19.03.2013 22:38 # +5
bormand 20.03.2013 06:10 # 0
P.P.S. Для знаковых надо что-то типа log10(2)*(CHAR_BIT*sizeof(T)-1) + 1. Минус 1 бит, плюс одно знакоместо. P.S. Хотя мой код для знаковых и флоатов выдаст неправильный ответ ;(
Yuuri 20.03.2013 11:21 # 0
А за numeric_limits спасибо.
bormand 19.03.2013 16:01 # 0
3.14159265 19.03.2013 18:09 # +2
guest 19.03.2013 18:39 # +2
Жиденький понос, разве не для этого был создан этот сайт?
guest 22.03.2013 09:10 # −1
Xom94ok 19.03.2013 19:30 # 0
roman-kashitsyn 19.03.2013 20:56 # 0
Xom94ok 19.03.2013 21:09 # +1