Почему приведение в стиле C работает, а повторное приведение _— нет?

Итак, у меня есть массив из двух символов

unsigned char v[2];

Я хочу показать значение v[0] как число от 0 до 255, но

cout << v[0] << endl; //prints some garbage

cout << (void*)v[0] << endl; //prints the right thing but in hex

Поэтому я попытался

cout << (int)v[0] << endl;

или

printf("%d\n", v[0]);

Это показывает именно то, что я хотел, но мне это совсем не нравится. Также я совсем не понимаю, почему это не работает:

cout << reinterpret_cast<int>(v[0]) << endl; //compiler error
12
задан hippietrail 18 August 2012 в 20:50
поделиться