klay8686 发表于 2020-9-9 22:18:27

关于printf的问题

将第一个程序中的--i改成第二个程序中的i--(红色字体),为什么前后两个程序的结果没有变化?
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}
输出结果:
8
8
7
8
-7
-8

void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,i--,i++,i--,-i++,-i--);
}

输出结果:
8
8
7
8
-7
-8

ba21 发表于 2020-9-9 22:33:13

http://1118pc.com/show_pdetails.asp?id=994

风过无痕1989 发表于 2020-9-10 00:52:31

下面是加加减减的运算,搞懂了,你就会理解了:

#include<stdio.h>

int main()

{
      int j = 3,i = 5;
      printf("j = 3,i = 5\n");
          printf("\n");
          j = j * (i++);
          printf("j = j * (i++) 运算后的结果是:%d, %d",j,i);
          printf("       // 先运算,再自加");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
          j = j * (i--);
          printf("j = j * (i--) 运算后的结果是:%d, %d",j,i);
          printf("       // 先运算,再自减");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (++i);
          printf("j = j * (++i) 运算后的结果是:%d, %d",j,i);
          printf("       // 先自加,再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (--i);
          printf("j = j * (--i) 运算后的结果是:%d, %d",j,i);
          printf("       // 先自减,再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (+i);
          printf("j = j * (+i)运算后的结果是:%d, %d",j,i);
      printf("       // 保持符号再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (-i);
          printf("j = j * (-i)运算后的结果是:%d, %d",j,i);
          printf("      // 改变符号再运算\n");
          printf("\n");

          printf("单一的 i+ 或单一的 i-                  // 没有意义,并且系统会报错\n");
          printf("\n");

}

klay8686 发表于 2020-9-10 09:05:07

ba21 发表于 2020-9-9 22:33
http://1118pc.com/show_pdetails.asp?id=994

您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗?

baige 发表于 2020-9-10 09:35:27

不同编译器会对复杂的++,--会有不同的结果,不同编译器的结合顺序不同,没有必要纠结这些

巴巴鲁 发表于 2020-9-10 12:17:32

klay8686 发表于 2020-9-10 09:05
您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗?

没认真看啊,刚开始就说不同编译器可能不同了

ba21 发表于 2020-9-10 20:26:51

klay8686 发表于 2020-9-10 09:05
您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗?

是的

klay8686 发表于 2020-9-11 16:05:54

ba21 发表于 2020-9-10 20:26
是的

好的好的 谢谢了
页: [1]
查看完整版本: 关于printf的问题