2015-02-08 17 views
4

我目前通过'用C++解决问题'来学习C++(第九名,萨维奇)。这本书展示了一个while循环的例子。 while循环如下所示。在C++中,等于运算符是否合法,两者之间是否存在空格?

while (ans = = 'Y' || ans = = 'y') 
{ 
    //compound statement 
} 

anschar类型。 布尔表达式似乎试图使用相等运算符,并在//compound statement的上下文中这是有道理的。但是,我一直认为在平等运营商中空白是非法的。即==是合法的,但= =是非法的。

当我复制代码并编译它时,我的编译器在碰到= =时会抛出错误'expected expression',就像我试图将表达式分配给一个变量一样。我几乎肯定这是书中的一个错字。然而,以防万一本书试图抛出一个弧线球,我想我会问...

非常感谢!

回答

3

是两个=的之间的空白在平等运营商的法律在C++?

编号= =是两个=令牌。 ==是一个==令牌。当你指的是后者时,你不能使用前者。

+3

有人可能会添加标记化阶段,至少在概念上不同,并配备任何语义在踢之前,人类看到,忽略了'='S之间的空间,使得程序是有意义的,但是编译器不能 - 。和不允许 - 看到这一点,因为它不会在标记化过程中理解程序。 *做的阶段*尝试有意义,otoh,不再看到来源;它会看到一系列无用的令牌。 – 2015-02-08 04:26:54

+0

@ T.C。谢谢。所以我坚持打字错误呢?即使在任何情况下都不需要使用'= ='。 – 2015-02-08 05:17:36

+0

@PeterSchneider感谢您的额外信息! – 2015-02-08 05:18:13

相关问题