一些问题,大家多帮忙!!
1.
main()
{
int x,y,z;
long m;
y=(x=32767,x-1);
z=m=0xffff;
printf("%d,%d,%d,%ld",x,y,z,m);
}
z和m的结果为什么是-1和65535?
2.
main()
{
int a,b,c;
a=b=c=1;
++a||++b&&++c;
}
的执行顺序是什么?我知道&&先执行,且||前面为1时后面就不执行了,但是否||后面的值为1时前面就不计算呢?
3.
int x=1,y=0;
x-->(y+x)?5:25>y++?'1':'2'
以上语句先执行后面的?:得到'1',y的值变为1,再执行x-->(y+x)?,应该等价于1>1,其值为假,应该得到'1',可答案却是5,这是为什么?
4.
x=3;
do{
y=x--;
if(!y) {printf("x"); continue;}
printf("#");
}
while(1<=x<=2);
在哪是死循环?
4.
#include<stdio.h>
main()
{
int i,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b-->0) k++;
}
printf("\n%d,%d",k,b);
}
这段程序我运行的结果是3,-1,而答案是8,-2,哪个是对的?