所以在这个函数中,它并没有将突破设置为6.当它打印时,我得到"突破"没有数字跟随它。
void tokens::driver()
{
//comment(getInput());
// std::cout<< "driver working"<<std::endl;
breakout=6;
std::cout<< "breakout"<<breakout<< std::endl;
integerConstant(breakout);
//symbol(getInput());
std::cout<< "breakout"<<breakout<< std::endl;
}
我的文件是这样的:
class tokens
{
public:
void driver();
char breakout;
private:
char getInput();
char integerConstant(char input);
char symbol(char input);
char whatWord(char input);
char comment(char input);
bool symbolMap(char input);
bool keywordMap(std::string input);
};
答案 0 :(得分:1)
breakout=6;
上述语句将6
的ascii值分配给breakout
ACK,这是不可打印的。
答案 1 :(得分:1)
最初breakout
设置为6,作为字符编码值是不可打印的ASCII字符。
将char
值6传递给cout
的一种可能影响是,不会显示任何内容。将它作为整数传递的一个不错的小技巧是使用前缀+
运算符,如下所示:+breakout
。然后你应该看到值6。
在integerConstant
中,单个参数按值传递。这是实际参数的副本。对副本所做的更改不会反映在实际参数中。
如果您打算将breakout
作为字符“6”,那么您应该用简单的撇号指定它,如下所示:
breakout = '6';
字符“6”的ASCII值是48 + 6 = 54,所以除了一些旧的IBM大型机(使用EBCDIC而不是ASCII)之外,上面的赋值相当于
breakout = 54;
但是写'6'
比54
更清楚。