搞了半天区分不明白,现在总算知道一点了,记录下来。 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); }

评论