当前位置: 代码迷 >> C语言 >> [求助]本人乃新手。。可不可以解释一下这一韪
  详细解决方案

[求助]本人乃新手。。可不可以解释一下这一韪

热度:107   发布时间:2007-04-13 18:48:58.0
[求助]本人乃新手。。可不可以解释一下这一韪

#include"stdio.h"
void main()
{int a=5,c;
c=(a/=a++);
printf("%d",c);
}

为什么结果是1??
当我把int换成float结果又怎么变成0了??

搜索更多相关的解决方案: 解释  

----------------解决方案--------------------------------------------------------
为什么不是先计算a++
我用的是
float a=5.0 ,c=5.0:
----------------解决方案--------------------------------------------------------
你只要知道“=”的优先级要比“++”的优先级要高!
书上有的。
----------------解决方案--------------------------------------------------------
我的理解概括为以下几点
1.c=(a/=a++);可以等价写成c=a=a/a++;
2.a++的意思是先用a完成本语句,再将a+1
3.所以c=a=a/a++;等价于写成两句c=a=a/a;
a=a+1;
4.所以最后c=1 a=2
5.如果把int变成float,结果显示为0,那是你的输出格式忘改了,应该把"%d"也改成"%f"输出就是1.0000了
6.我的疑点是为什么程序写成
#include"stdio.h"
void main()
{
float a=5.0,c;
c=(a/=a++);
printf("%f",a);
}
输出是6.00000

[此贴子已经被作者于2007-4-13 19:55:30编辑过]


----------------解决方案--------------------------------------------------------

执行完后 A要加1


----------------解决方案--------------------------------------------------------
回复:(v1v1wang)[求助]本人乃新手。。可不可以解释...

我改后,结果是1.0000啊!并不是0


----------------解决方案--------------------------------------------------------
我的结果,咱们对比一下。(vc6)

#include"stdio.h"
void main()
{int a=5,c;
c=(a/=a++);
printf("%d\n",c);
} //结果是 1


#include"stdio.h"
void main()
{float a=5,c;
c=(a/=a++);
printf("%d\n",c);
} // 结果是 0
#include"stdio.h"
void main()
{float a=5,c;
c=(a/=a++);
printf("%f\n",c);
} //结果是 1.000000

----------------解决方案--------------------------------------------------------
这个还是要多多看书..基本...看你的教程....一本看不懂,再拿多本来看...
别没想过,就上来问..艾...中国人的毛病
----------------解决方案--------------------------------------------------------
以下是引用pinglideyu在2007-4-13 19:47:32的发言:
你只要知道“=”的优先级要比“++”的优先级要高!
书上有的。

你再去看看运算符的优先级,++是排第二的


下面对楼主的回答一下:

在一个变量后用++(或--)运算符,会将这个语句运行完之后再对这个变量进行++(或--),如果是出现++(或--)运算符出现在变量之前,在运行这个语句之前,先执行在变量之前的++,得到的结果再参与运算,以上只是针对只有一个++(或--)运算符的表达式,若一个表达式中有多个++(或--)运算符,不同的编译器会有不同的结果,我这里就不说了

第二个问题之所以输出的是0,是因为你用%D去输出FLOAT型,应该用%F


----------------解决方案--------------------------------------------------------
以下是引用hxw84在2007-4-13 19:54:39的发言:
我的理解概括为以下几点
1.c=(a/=a++);可以等价写成c=a=a/a++;
2.a++的意思是先用a完成本语句,再将a+1
3.所以c=a=a/a++;等价于写成两句c=a=a/a;
a=a+1;
4.所以最后c=1 a=2
5.如果把int变成float,结果显示为0,那是你的输出格式忘改了,应该把"%d"也改成"%f"输出就是1.0000了
6.我的疑点是为什么程序写成
#include"stdio.h"
void main()
{
float a=5.0,c;
c=(a/=a++);
printf("%f",a);
}
输出是6.00000


我不知道你是什么编译器 我运行出来是1.00000 没错
----------------解决方案--------------------------------------------------------