我正在使用提供的API,它对整数有一些宏定义,如下所示:
// Macros for logic values
#define LOGIC_UNSET -1
#define LOGIC_ZERO 0
#define LOGIC_ONE 1
#define LOGIC_D 2
#define LOGIC_DBAR 3
#define LOGIC_X 4
// Macros for fault types
#define NOFAULT -1
#define FAULT_SA0 0
#define FAULT_SA1 1
现在,在其中一个API函数中,它声明了char
类型的变量,并且分配给此char
的值是其中一个宏的值。
bool getObjective(Gate* &g, char &v, Circuit* myCircuit)
其中v
收到LOGIC
宏的值。
这对我来说没有意义,当我试图在char上做cout
时,我得到的ascii符号并没有帮助我。我真的很困惑。这是一个错误吗?您可以将int
传递给char
吗?如果是,我如何打印char以便我在控制台上获得宏或宏值?
答案 0 :(得分:2)
<<
ostream char
故意打印ASCII符号。
您可以使用<< (int)v
来消除此行为。
使用char
存储整数值没有任何问题。虽然请注意char
可以是unsigned
类型,但这可能会使NOFAULT
(作为-1
)的行为难以管理。
最好的办法:使用int
。
答案 1 :(得分:1)
您可以将int
传递给char
变量。如果int
为32位且char为16位,或者您的int
仅为16位,则表示您已准备好为int
的某些部分留下痕迹。
要打印,你总是可以施放,
std::cout<< (int) your_char