@C语言大神:t=1这个式子定义在float和int之后的结果,为啥不一样?

程序结果完全不一样了。求解释!
2025-03-11 15:14:30
推荐回答(1个)
回答1:

这个问题很容易让人感到费解,同样的数值,而仅是类型不同,的确会得到不同的结果。算术运算是通过栈结构来实现的,操作数和运算符分别存放在操作数栈和运算符栈中,根据运算符的优先级进行进栈、压栈操作。
假设x初值都为1,运算符‘++’的优先级高于‘*’,很容易理解对于浮点数是2.0*3.0得到6.000000。而对于整型数,两个操作数都为3,得到结果是9。
由此分析,对于整型数‘++’操作的是同一个内存地址,而对于浮点型数则是直接把运算结果赋值给栈空间。