Почему cout не печатает внешнюю переменную "C"?
Рассмотрим следующий код:
extern "C" {
#include <lib.h>
}
#include <iostream>
int main() {
unsigned char a='a';
unsigned char b=some_struct_in_libh->unsignedchar;
cout << a << " " << b << endl; //Prints only a
printf("%u\n",b); //Prints b
cout << static_cast<int>(b) << endl; //Also prints b
return 0;
}
Почему это ведет себя так?
1 ответ
Решение
Это не только печать a
совсем. Вместо этого вы видите, что cout
печатает данные типа символов как символы, а не числа. Ваш b
это какой-то персонаж, который не для печати, так cout
старательно печатает его как пустое место.
Вы нашли решение, приведя его к int.
РЕДАКТИРОВАТЬ: Я почти уверен, что ваш printf работает только случайно, потому что вы сказали ему ожидать неподписанного int и дали ему символ (разное количество байтов).