неожиданный вывод при передаче неподписанного символа в cout - PullRequest
2 голосов
/ 29 марта 2012

Возможно, в моем коде глупая ошибка.Я определил следующие переменные:

unsigned char   uEngines;
unsigned short  uActiveEngines
unsigned short  uDed
.... 

и несколько других.

В другом месте кода я попытался напечатать структуру в GDB и получил следующее.

$6 = {uEngines  = 12 '\f', uActiveEngines = 4095 .....

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

cout <<strVariable->uEngines;

2) что означает '\ f' означает в выводе GDB?

Что-то не так с типом данных?

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Это подача формы, один из непечатных символов в наборе символов ASCII ниже пробела.

Он предназначен для выполнения операции «продвижение страницы» на любом устройстве, на которое вы его отправляете, при условии, что устройство

12 - это десятичное значение, как показано ниже:

Char  Dec  Hex  Control Action
----  ---  ---  --------------
NUL     0    0  Null character
SOH     1    1  Start of heading, = console interrupt
STX     2    2  Start of text, maintenance mode on HP console
ETX     3    3  End of text
EOT     4    4  End of transmission, not the same as ETB
ENQ     5    5  Enquiry, goes with ACK; old HP flow control
ACK     6    6  Acknowledge, clears ENQ logon hand
BEL     7    7  Bell, rings the bell...
BS      8    8  Backspace, works on HP terminals/computers
HT      9    9  Horizontal tab, move to next tab stop
LF     10    a  Line Feed
VT     11    b  Vertical tab
FF     12    c  Form Feed, page eject
CR     13    d  Carriage Return
:
:

Поскольку это char, std::cout << uEngines; выведет его как символ, а не как целое значение,Если вы хотите, чтобы это было как целое значение, приведите его к одному:

std::cout << (int)uEngines;
1 голос
/ 29 марта 2012

Ответ на 1) и 2) заключается в том, что это char, поэтому он интерпретируется как символ ASCII.

1) Приведите его к int для печати числового значения.

cout << (int) myStruct.uEngines;

2) Это безобидная причуда о том, как GDB отображает значение, и ее можно игнорировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...