c++ - cout减去简单打印的输出

标签 c++ printing cout

当我使用 cout 打印我的变量值时,如果我在一行或两行中使用两个语句,它不会给我相同的答案。你能帮帮我吗?

int a= 5;
cout << a << endl;
cout << a-- << endl;

cout << a << a-- << endl; 
// it gives me different answer, why?
//they are basically same thing 

最佳答案

cout << a << a-- << endl; 

翻译为:

cout.operator<<(a).operator<<(a--).operator<<(endl);

在这种情况下,语言不保证首先评估哪个参数。编译器可以自由选择对他们有意义的评估顺序。请注意,函数调用顺序是有保证的,但函数参数的评估顺序是有保证的。

如果您能够使用 ,标准已更改为 <<运算符(operator)。它保证了有意义的评估顺序,您将获得预期的结果。

关于c++ - cout减去简单打印的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54811833/

相关文章:

c++ - 使用 C++ 将 XMacro 结构打印到控制台

C++ streamsize prec = cout.precision(3) - 它是如何工作的?

c++ - 从麦克风捕获声音时未执行QAudioInput::notify()

c++ - 使用 boost 工厂在构造函数中传递参数

r - 打印 dplyr 的过滤功能过滤掉的行数

c++ - 有没有像打印机标记语言这样的东西

使用 setw(x) 而不是 put_money 对齐小数点的 C++ cout 列表

c++ - C++ 中的对象初始化和对象工厂

c++ - 如何将 2 个链接列表组合或合并在一起以创建一个新列表?

Windows 服务无法打开 COM 端口