增量后缀和前缀都是比按位左移更高的运算符优先级,但以下打印出不同的结果。
int testValue = 1;
std::cout << ++testValue; //prints 2
//saw it as std::cout << (++testValue);
testValue = 1;
std::cout << testValue++; //prints 1
//thought it was std::cout << (testValue++);
为什么在插入之前第二个示例中显示的增量后缀打印1?我认为它与增量前缀情况下的testValue
绑定得更紧密,所以我认为在使用std::cout
打印之前,它会先增加。
答案 0 :(得分:4)
<<
不是按位运算符,而是insertion operator
。 cplusplus参考:
作为类ostream的对象,也可以将字符写入其中 作为使用插入运算符的格式化数据(运算符&lt;&lt;)。
testValue = 1;
std::cout << testValue++; //prints 1
后增量表示在读取变量后完成增量。
答案 1 :(得分:2)
你误解了testValue++
的作用。
它递增testValue
但它的评估是在增量之前。
该行
std::cout << testValue++;
相当于
std::cout << testValue;
testValue = testValue + 1;