主题:  四个C的小问题

梅友酷子

职务:普通成员
等级:1
金币:0.0
发贴:8
注册:2001/12/5 11:04:46
#12001/12/18 19:56:19
第一题:
如果int =3;则k=(i++)+(++i)+(i++)执行过后k的值为_____,i的值为_____
答案是12,6
第二题:
如果int =3;则k=(++i)+(++i)+(++i)执行过后k的值为_____,i的值为_____
答案是18,6
谁能解答一下具体的操作步骤
第三题:
main()
{
int x;
x=-3*4%-6/5;ptintf("%d",x);
}
输出为0
第四题:
如果上题中int x=2,y=0,z;
x*=3+2;printf("%d",x);
x*=y=z=4;printf("%d",x);
那么输出为10和40,
请问这些答案是怎么得出的呢?



suntinge

职务:普通成员
等级:1
金币:0.0
发贴:40
注册:2001/12/7 18:43:14
#22001/12/23 16:52:35
问题2:k=(i++)+(++i)+(i++),k可能会有不同的值(看你用的是那种c系统,好象我的系统和你的不同)一般程序不推荐用这种格式。你回去好好看看i++和++i的区别。这两个题是两个不同系统的运行结果。
如果,1题k=12,那么2题k=9。
如果,2题k=18,那么2:k=18。

问题3:等价于x=(-3*4)%(-6/5) 即x=-12%-1,当然等于0了。 (-6/5=-1)
程序等价于:
x=x*(3+2) // 即:x=2*5=10
x=y=z=x*4 //这时x的初值是10,so ,x=y=z=10*4;

懂了吗??

编辑历史:[这消息被suntinge编辑过(编辑时间2001-12-26 21:49:04)]