tag:blogger.com,1999:blog-2556258918178996148.post4229448648477190892..comments2023-06-02T19:06:27.039+08:00Comments on venj's blog: 一段有意思的C代码Unknownnoreply@blogger.comBlogger2125tag:blogger.com,1999:blog-2556258918178996148.post-51499734822256929802006-09-28T21:27:00.000+08:002006-09-28T21:27:00.000+08:00Dev-C++的版本号是4.9.9.2,gcc版本是3.4.2的。C:\Dev-Cpp\bin>...Dev-C++的版本号是4.9.9.2,gcc版本是3.4.2的。<br><br>C:\Dev-Cpp\bin>gcc -v<br>Reading specs from ../lib/gcc/mingw32/3.4.2/specs<br>Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=<br>mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable<br>-languages=c,c++,f77,ada,objc,java --disable-win32-registry --disable-shared --e<br>nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja<br>va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz<br>ation --enable-libstdcxx-debug<br>Thread model: win32<br>gcc version 3.4.2 (mingw-special)<br>Leopardhttp://newaqua.spaces.live.com/noreply@blogger.comtag:blogger.com,1999:blog-2556258918178996148.post-28568830138795103782006-09-28T17:57:00.000+08:002006-09-28T17:57:00.000+08:00奇怪,每执行一句,栈都向下生长,而 scanf 应该是向上的,所以会把栈破坏掉一部分。想想入栈时返回...奇怪,每执行一句,栈都向下生长,而 scanf 应该是向上的,所以会把栈破坏掉一部分。想想入栈时返回值、返回地址、参数的顺序是什么呢,有可能是编译器为函数执行预先分配栈空间,把返回值,返回地址和参数放在栈空间末尾(低端),因此 scanf 可以正常返回,继续执行下一句。下一句 printf 与 scanf 这一句的栈格式相同,因此 name 没有被破坏。然后 main 返回地址坏掉了.. 不知道怎么解释了,为什么坏掉了还会跳转到 main。<br>cygwin 不会这样,也许 dev-c++ 的 gcc 版本有些低?什么版本的?<br>Yijun(bbbush)(F)Yuanhttp://yuan2651.spaces.live.com/noreply@blogger.com