用cout输出一个表达式时工作原理是怎样的?

cout<<(n*(n+1))/2;
后面跟着的那个表达式将会被赋予什么类型?与n的类型有关吗?

 C++会进行类型推断,表达式的类型和表达式的结合有关。
比如说,如果n是int,表达式就是int类型。如果是 n / (float)2 就是float类型。
表达式会被首先求值,<<是一个重载过的运算符,相当于一个函数,求值后的表达式相当于函数的参数,结果是把输出写入流中。