Bingo, Computer Graphics & Game Developer

C++编程思想(读书笔记_1)

P78 中讲到

while((char c = cin.get()) != 'q')

这里c的结果会得到一张笑脸

作者说while if switch里不能插入括号

事实上 原文作者的意思是这样的 并非不能插入括号 而是说char c这样的语句放在括号中是不行的

// error
while((char c = cin.get()) != 'q')
{

}

// correct
while(char c = cin.get() != 'q')
{

}

因为char c = ...这里c的作用域只在括号中 所以超出了范围自动回收 并不能参与运算 正确的写法应该是

while(char c = cin.get() != 'q')

这里的!=优先级比 = 要高

所以c得到的不是cin返回的字符串 而是一个bool 所以大多数情况下回显示一个笑脸