搞了半天区分不明白,现在总算知道一点了,记录下来。
main()
{
int i=1,k;
k=i++;
printf("k=%d,i=%d\n",k,i) ;
i=1;
k=++i;
printf("k=%d,i=%d\n",k,i) ;
i=1;
i=i++ ;
printf("i=%d\n",i) ;
i=1;
i=++i;
printf("i=%d\n",i) ;
i=1;
printf("i++=%d\n",i++);
i=1;
printf("++i=%d\n",++i);
i=1;
printf("(i++)+(i++)=%d\n",(i++)+(i++));
i=1;
printf("(++i)+(++i)=%d\n",(++i)+(++i));
getch();
}
结果:
k=1,i=2
k=2,i=2
i=2
i=2
i++=1
++i=2
(i++)+(i++)=3
(++i)+(++i)=5
说明:
k=i++
k=i,i=i+1
而++i等价于k=(i=i+1)
在printf("i++=%d\n",i++);这种情况下i=i;
printf("i++=%d\n",++i);这中情况下temp=i+1,i=temp
printf("(i++)+(i++)=%d\n",(i++)+(i++));这中情况下temp1=i,temp2=i+1,i=temp1+temp2
temp在这里面是一个临时空间
其他的:
int i=3;
printf(“%d”,-i++);
(A)3 (B)4 (C)-3 (D)-4
分析:此题考查运算符的优先级,负号运算符和++运算符同优先级,而结合方向为“自左至右”,即-i++相当于-??i++??,所以先取出i的值3,输出-i的值-3,然后i增值为4,而不是i先增值为4,然后输出-4,所以答案选择C。
求1+2!+3!+...+20!的和
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n; //t=t*n
s+=t; //s=s+t
}
printf("1+2!+3!...+20!=%e\n",s);
}
评论