‘++’运算符问题???

ra3 2002-09-18 06:31:09

void main()
{
float x=1,y;
int X=1,Y;

y=++x * ++x;
printf("%f\n",y);

Y=++X * ++X;
printf("%d\n",Y);
}

运行结果是:
6.00000
9

X 的结果怎么不一样?
而输出 ++x 和 ++X 的结果是一样的.
...全文
46 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alexxing 2002-09-19
  • 打赏
  • 举报
回复
不需要了解这种原因,因为根本就没有规律可循!

不同的编译器上可能会生成不同的操作。

如果要“举一反三避免”,就根本不要用这种东西
luzhl 2002-09-19
  • 打赏
  • 举报
回复
初学C研究这种问题是很有意思的,很想知道为什么,让编译器生成汇编看看就明白了,不过不同编译器结果不一样。
glassshark 2002-09-19
  • 打赏
  • 举报
回复
不要研究同编译器相关的东西。
要避免写编译器相关的东西,也就是C/C++未规定的东西,它们往往是造成不可移植的原因,而且也常常是浪费你时间和制造错误的祸首。
bigant888 2002-09-18
  • 打赏
  • 举报
回复
那为什么会出现这种情况呢? 我也是这样子的~

如果知道原因就可以举一反三了避免这些问题,不是吗??
CCLIS 2002-09-18
  • 打赏
  • 举报
回复
学习C++何必要用这样令人发晕的语句,C++的语句是灵活,但它是用来做好程序,而不是拿来让人迷惑的,将一个语句分成多个语句执行,结果将会一定。

不要使用具有二义性的语句,在不同的编译器上也可能会生成不同的操作。
用户 昵称 2002-09-18
  • 打赏
  • 举报
回复
楼主的y和Y应该没错吧,我也是6 6
hhp7979 2002-09-18
  • 打赏
  • 举报
回复
如果是c语言的话,x++ 和++x是不一样的,y=x++,就是说x加1再赋值给y
而y=++x,就相反,x本身加1,而y的值就是x没加1的值
fqcd555 2002-09-18
  • 打赏
  • 举报
回复
哈.
up
cmove 2002-09-18
  • 打赏
  • 举报
回复
C语言中对"++"运算只能是整型,没有见过实型自加的,你好好看看谭浩强的书吧
O K?
sjd163 2002-09-18
  • 打赏
  • 举报
回复
通过试验了解你用的系统的x++的规律比问别人更实际。
dreamhead 2002-09-18
  • 打赏
  • 举报
回复
不知道你用的什么编译器,我用gcc在solaris上跑的结果是:
6.000000
6

看来,对于int类型,结果和具体系统相关。
对于float类型++,呵呵,我还真的没这么用过。
建议你看一下《程序设计实践》,尽量用一些常用的手法,避免这种和系统结合比较紧密的做法。
如果你纯粹想玩一下,那没有问题。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧