相关疑难解决方法(0)

为什么这些构造使用前后增量未定义的行为?

#include <stdio.h>

int main(void)
{
   int i = 0;
   i = i++ + ++i;
   printf("%d\n", i); // 3

   i = 1;
   i = (i++);
   printf("%d\n", i); // 2 Should be 1, no ?

   volatile int u = 0;
   u = u++ + ++u;
   printf("%d\n", u); // 1

   u = 1;
   u = (u++);
   printf("%d\n", u); // 2 Should also be one, no ?

   register int v = 0;
   v = v++ + ++v;
   printf("%d\n", v); // 3 (Should be the …
Run Code Online (Sandbox Code Playgroud)

c increment operator-precedence undefined-behavior sequence-points

793
推荐指数
13
解决办法
7万
查看次数

printf使用堆栈?

可能重复:
对包含前缀和后缀运算符的printf()感到困惑.

我遇到了一个包含以下代码段的代码,

int main()  {
    int c = 100;
    printf("\n %d \t %d \n", c, c++);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我预计输出为100和101,但输出为

 101     100
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我知道原因吗?

c++ programming-languages

5
推荐指数
3
解决办法
929
查看次数