哪位老师对自增,自减有深刻理解,简单易懂教教我
简单代码能看懂,稍微复杂点的代码,数就算不好了,还是理解不深刻{:5_99:} 看不懂程序,看后面打印出来的结果吧#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");
}
***********************************************************
运算结果:
本帖最后由 baige 于 2020-8-5 07:59 编辑
//后自增和后自减都会创建一个临时变量temp存储自增或自减之前的值
#include <stdio.h>
int main()
{
int i, j, k;
i = 1;
j = 2;
k = (++i) + (i++) + (--j) + (j--);
//dev运行换成k = (++i) + (--j) + (j--) + (i++);
printf("i = %d\nj = %d\nk = %d",i,j,k);
return 0;
}
第一步:i=i+1=2
k =2+ (2++) + (--j) + (j--)
第二步:temp=i=2
i=i+1=3
k =2+ temp+ (--j) + (j--)
第三步:j=j-1=1
k = 2 + 2 + 1 + (j--)
第四步:temp=j=1
j=j-1=0
k = 2 + 2 + 1 + temp
第五步:k = 2 + 2 + 1 +1
最后输出:
i = 3
j = 0
k = 6
不推荐使用dev运行,用别的编译器
DEV C++作为运行环境,编译器是从左至右扫描表达式的,但是在其他编译器中可能会出现从右至左扫描的情况,那么同一个程序的运行结果就不同了。
页:
[1]