2013-10-14 24 views
0

因此,这些是让我感到沮丧的例子类型,因为它们看起来很简单,但不会产生所需的结果。考虑下面的例子:C++转义字符和参考变量输出混淆

#include <iostream> 

int main() 
{ 
    int a = 7; 
    int &b = a; 

    std::cout << "a = " << a << " ,\tb = " << b << std::endl; 

    b = 10; 

    std::cout << "a = " << a << " ,\tb = " << b << std::endl; 

} 

输出:

a = 7 , b = 7 
a = 10 , b = 10 

可为什么第一个转义字符似乎被忽略,没有标签,但在第二个例子中的标签是有人请向我解释当下。一直看这个例子,我没有接近解决方案。

注:我在视觉工作室2010

+1

制表符不插入绝对间距。如果你想要一个视觉效果,看起来我已经做过一个之前:http://stackoverflow.com/questions/18285325/trouble-understanding-tabs/18285381#18285381 – chris

回答

1

a = 7 ,” 运行这个拥有7个字符。如果在位置8处有制表位(例如,由终端设置的tabs command),则附加制表符有效地添加与附加空格字符相同数量的空白。

+0

哇,我觉得愚蠢,这很有道理,虽然哈哈。感谢您的帮助,在时间限制结束后会接受答案。 –

1

这可能是一种索引类型的错误。 C++和g ++编译器的输入和输出语句经常发生。

修复:在该行的任何连接的cout语句中的起始字符之前添加一个空格。

std::cout << " a = " << a << " ,\tb = " << b << std::endl; //之前 'A' 在第一COUT

std::cout << "a = " << a << " ,\tb = " << b << std::endl; //added an extra white space before the 'comma' in the concatenated cout. 

就像什么奥斯瓦德刚才说增加了一个空间。

这必须解决你的问题:)干杯!