c++ - 为什么这个循环运行不可见代码?并且没有按顺序工作

标签 c++

int ASCI1 = 1;

for (int i = 1; i < 8; i++)
{
    cout << ASCI1 << endl << ASCI1++;
}

我得到输出:

2
13
24
35
46
57
68

7(由于某种原因这里没有结束行)。

这个想法是为了得到

1
2
3
4 
etc.

完全被难住了,请帮忙!

最佳答案

<< 运算符在 C++ 中未定义为序列点,因此可以按任何顺序计算 ASCI1ASCI1++

如果您尝试通过未排序的评估对对象执行读取和写入操作,那么您将有未定义的行为,因此您会看到垃圾输出。

最后,您没有在末尾看到换行符 1) 因为您很幸运,并且 2) 因为即使您的循环按照您的计划执行,您仍然在执行写入而没有跟进另一个 endl

关于c++ - 为什么这个循环运行不可见代码?并且没有按顺序工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37710398/

相关文章:

c++ - 如何复制已经打开的文件?

c++ - IOS 版本包含 IDA 中可见的符号

c++ - 哪个指针赋值更好(C++)

c++ - 使用来自不同类的对象时出错

c++ - 将数据文件读取到数组,传递给成员函数 - 丢失

c# - 如何删除Windows Mobile的SIP按钮

c++ - 为什么模板类型的初始化需要重复变量的类型?

c++ - 在 CLion 中使用 freeglut 在 OpenGL 中链接错误

c++ - 在 C++ 中为 const 变量赋值

C++ 枚举不是的成员