C语言同一变量进栈出栈问题

如图,为什么结果是这样的?在不同编译环境结果还不一样,图1turbo c2.0,图2c++6.0

第1个回答  2018-09-14
这和 编译器 相关的,
c++ 编译 时, 把这条语句当作一个整体, 对 --y 先计算,
然后 执行 printf, 执行完后再对2个 y-- 计算。
而turbo c编译时, 在传参前已经计算了 --y 和 y--, 所以结果不一样。
这种写法也就玩玩可以,正式项目这么写就是自己作死。
顺便说一句,这和堆栈没有任何关系,你们老师比较水
第2个回答  2018-09-14
主要的问题在于不同编译器,参数压栈的顺序和参数值计算的顺序都不一样,并且压栈的顺序不一定和参数值计算顺序相同,因此不同编译器出来的结果会不一样。
你的这两个编译环境,都是从右往左算就对了,唯一差别是在于,VC6的y--是要等到printf执行完成之后再执行,而TurboC是先执行y--再执行printf。本回答被网友采纳
第3个回答  2018-09-14
结果:stack
请采纳。。。。
第4个回答  2018-09-14
我的VS运行的也不一样追问

问了老师,说是同一变量进栈出栈的问题,先进后出,但是还是无法理解

追答

不知道哦,我用keil5编译stm32运行又没事 应该是编译器的问题

相似回答
大家正在搜