为什么我不能在这个成员函数中设置这个成员变量?

时间:2016-05-28 03:36:47

标签: c++ function class variables output

所以在这个函数中,它并没有将突破设置为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);
};

2 个答案:

答案 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更清楚。