以下的C语言问题怎样解释

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:45:47
#include"stdio.h"
main()
{ int x=11,y;
y=x++*1/3;
printf("y=%d\n",y);
}
这个程序的结果为3。

#include"stdio.h"
main()
{ int x=11;
x=x++*1/3;
printf("x=%d\n",x);
}
这个程序的结果为4。

#include"stdio.h"
main()
{ int x=11,y;
y=x++*1/3;
printf("y=%d\n",y);
}
这个程序的结果为3。

#include"stdio.h"
main()
{ int x=11;
x=x++*1/3;
printf("x=%d\n",x);
}
这个程序的结果为4。
这个结果是正确的。。第二个如果不是x结果就是3,但是x++,所以在执行了第一个程序后还有个隐藏的一步x=x+1;即4

x++ 是先赋值后自增的。

x++的通俗意思是先运算后增1

第一个程序的y=x++*1/3可以扩展为
y=x*1/3
x=x+1;
所以y是3

而第二个的x=x++*1/3可以这么认为
x=x*1/3
x=x+1;
所以x为4

但在一个语句里即涉及运算符的使用,又修改了该运算符,这是不好的写法,应避免使用

一楼错了阿!的确是一个是3,一个是4;
表达式x++*1/3最后的结果是3。
在第一个中,y的值就是表达式的值,是3;
在第二个中,x=x++*1/3后还要执行x=x+1;所以变成了3+1=4;结果就是4了。

tags

1楼强悍,我拜你为师吧,正好我也有一些不明白的地方

取决于你的编译器了对输出语句的控制了,楼上正解,该程序你可分解为
y或者x= x*1/3 ; x++;
----------------------------------
首先 y= 11*1/3= 3.66666...
然后 第一个问题很明了,你用的是int型的,所以输出3,省掉后面的

第二个问题也很好解释,首先
x= 11*1/3= 3.66666... 然后执行x++,