相关疑难解决方法(0)

未定义的行为和序列点

什么是"序列点"?

未定义的行为和序列点之间的关系是什么?

我经常使用有趣和复杂的表达方式a[++i] = i;,让自己感觉更好.我为什么要停止使用它们?

如果您已阅读此内容,请务必访问后续问题重新加载未定义的行为和序列点.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ c++-faq undefined-behavior sequence-points

970
推荐指数
4
解决办法
10万
查看次数

C++ std :: cout和<<运算符,优先级

我有这样的代码:

std::cout << " a: " << classDate.getDays() << " b: " << classDate++ << " c: " << classDate.getDays();
Run Code Online (Sandbox Code Playgroud)

我重载了后增量运算符.

在类m_days变量中有值:

  • 在++运算符之前 - 4
  • 在++ oprator -5之后

我的问题是,为什么来自cout的结果是错误的顺序:

a:5 b:5 c:4

我在debuger中检查过它,课堂上的值是正确的.当我写这样的代码时:

std::cout << " a: " << classDate.getDays();
std::cout << " b: " << classDate++;
std::cout << " c: " << classDate.getDays();
Run Code Online (Sandbox Code Playgroud)

一切都是正确的(a:4 b:5 c:5).

这是运营商的优先问题吗?

卡米尔

c++ cout operator-keyword

3
推荐指数
1
解决办法
242
查看次数

在C++中用cout递增和递减

我是C++的新手,研究增量和减量运算符.所以我尝试了这个例子:

    int x = 4;    
    cout << ++x << "    " << x++ << "    " << x++ << endl << endl;
    cout << x << endl;
Run Code Online (Sandbox Code Playgroud)

它在C++ .NET和QtCreator以及5个在线C++编译器上返回这个奇怪的输出:

7    5    4

7
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我希望是这样的:

5    5    6

7
Run Code Online (Sandbox Code Playgroud)

你能解释一下会发生什么吗

c++ cout increment decrement

3
推荐指数
1
解决办法
6520
查看次数

在cout语句中首先运行什么?(C++ 17)

比方说,我有一个很长的声明

cout << findCurrent() << "," << findLowest() << "," << findHighest() << "," << findThird()<<"\n";

会像逻辑指令一样findCurrent()运行findLowest()吗?

c++ cout operator-overloading operator-precedence c++17

1
推荐指数
1
解决办法
151
查看次数