使用 printf vs cout 打印 ++i||j++&&++k 的不同值

Printing different values for ++i||j++&&++k with printf vs cout

此代码根据使用的是 printf 函数还是 cout 函数为 ++i||j++&&++k 打印不同的值。这是为什么?

#include <stdio.h>
#include <iostream>

using namespace std;

int main()
{

    int i = 1,j=1,k=1;
    cout<<++i||j++&&++k; 
    printf("%d", ++i||j++ && ++k);

}

根据 C++ Operator Precedence - cppreference.com<< 运算符的优先级高于 || 运算符。因此,语句

cout<<++i||j++&&++k;

表示

(cout<<++i) || j++&&++k;

因此打印增量后i的值

另一方面,++i||j++ && ++k的值会被

打印出来
printf("%d", ++i||j++ && ++k);

另请注意,cout<<++i||j++&&++k; 的执行可能会影响 printf("%d", ++i||j++ && ++k); 的结果,因为 ++ 运算符具有副作用,并且变量的值不会在语句之间重置.