Cout не печатает число

Проблема

Я не получаю вывода из простого cout, тогда как printf всегда будет печатать число:

std::cout << variableuint8;  // prints nothing
printf("%u", variableuint8); // prints the number

Я никогда раньше не сталкивался с таким поведением, и хотя У меня есть работа, которую я хотел бы понять.

Контекст:

Ура, указатели. Так что это может быть немного сложнее, чем указано. Вот контекст - я не думаю, что это должно иметь значение, к тому времени, когда cout и printf получат информацию, которая разыменована на простой беззнаковый char. Вероятно, это больше информации, чем необходимо для решения проблемы, но я хотел быть полным на случай, если она актуальна.

typedef unsigned char   UInt8;
typedef unsigned short  UInt16;

typedef struct{
   UInt8   len;
   // some other definitions. sizeof(DeviceNotification) <= 8
}DeviceNotification;

UInt8 somerandomdata[8];
DeviceNotification * notification;

notification = (DeviceNotification *) somerandomdata;

std::cout << "Len: (" << notification->len << ")\n";
printf("Len: (%u)\n", notification->len);

Случайные данные инициализируются в другом месте. Для этого вывода первый байт в массиве равен 0x08:

Вывод:

Len: ()
Len: (8)

Среда

  • Машина разработки:
    • OS X 10.6.8
    • Компилятор LLVM 1.7
    • Xcode 3.2.6
  • Тестовая машина:
    • OS X 10.6.8
16
задан Anton Korobeynikov 10 November 2011 в 11:58
поделиться