Issue
Я не получаю вывод от простого cout, тогда как printf всегда будет печатать число:
std::cout << variableuint8; // prints nothing
printf("%u", variableuint8); // prints the number
Я никогда не сталкивался с таким поведением раньше, ив то время как у меня есть работа вокруг, я хотел бы понять это.
Контекст:
Да, указатели.Так что это может быть немного более сложным, чем заявлено.Вот контекст - я не думаю, что это должно иметь значение, к тому моменту, когда cout и printf получат информацию, которую разыменовывают к простому неподписанному символу.Это, вероятно, больше информации, чем необходимо для решения проблемы, но я хотел бы завершить ее, если она не имеет отношения к делу.
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)
Среда
- Машина разработки:
- ОСX 10.6.8
- Компилятор LLVM 1.7
- Xcode 3.2.6
- Тестовая машина: