关于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 http://1118pc.com/show_pdetails.asp?id=994 下面是加加减减的运算,搞懂了,你就会理解了:
#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");
} ba21 发表于 2020-9-9 22:33
http://1118pc.com/show_pdetails.asp?id=994
您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗? 不同编译器会对复杂的++,--会有不同的结果,不同编译器的结合顺序不同,没有必要纠结这些 klay8686 发表于 2020-9-10 09:05
您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗?
没认真看啊,刚开始就说不同编译器可能不同了 klay8686 发表于 2020-9-10 09:05
您好,相同的程序我跟您的结果是不一样的,请问这是因为编译器不一样导致的吗?
是的 ba21 发表于 2020-9-10 20:26
是的
好的好的 谢谢了
页:
[1]