C语言下的同样程序,在linux gcc下和在dev c++下运行的结果不同,求解:
win7X32devc++下:#include<stdio.h>#include<stdlib.h>intmain(){inti=3;printf("%d,%d,%d,%...
win7 X32 dev c++ 下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=3;
printf("%d,%d,%d,%d,%d,%d,%d\n",i++,++i,i--,--i,i--,i--,i+5);
printf("%d\n",i);
printf("%d\n",i);
system("pause");
return 0;
}
结果为:
0,0,0,0,2,3,8
1
1
请按任意键继续. . .
centos 6.4 x64 GCC
#include <stdio.h>
int main()
{
int i=3;
printf("%d,%d,%d,%d,%d,%d,%d\n",i++,++i,i--,--i,i--,i--,i+5);
printf("%d\n",i);
printf("%d\n\n",i);
return 0;
}
结果:
[root@localhost ~]# ./a.out
0,1,0,1,2,3,8
1
1 展开
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=3;
printf("%d,%d,%d,%d,%d,%d,%d\n",i++,++i,i--,--i,i--,i--,i+5);
printf("%d\n",i);
printf("%d\n",i);
system("pause");
return 0;
}
结果为:
0,0,0,0,2,3,8
1
1
请按任意键继续. . .
centos 6.4 x64 GCC
#include <stdio.h>
int main()
{
int i=3;
printf("%d,%d,%d,%d,%d,%d,%d\n",i++,++i,i--,--i,i--,i--,i+5);
printf("%d\n",i);
printf("%d\n\n",i);
return 0;
}
结果:
[root@localhost ~]# ./a.out
0,1,0,1,2,3,8
1
1 展开
4个回答
展开全部
Dev-C++是windows上的一个IDE,gcc是DevC++默认使用的编译器
也就是说,gcc是内核,DevC++是外壳.
C/C++语言没有规定具体压栈顺序,没有标准化时C语言支持没有固定参数的函数,所以为了实现这个当时多数编译器都采用从右往左压栈,但是标准化的要求至少有一个固定参数,这个限制就没有必要了。不过从右到左几乎已经成为了C编译器惯用的顺序。C++的_stdcall方式也是采用从右到左,不同的只是不需要调用者自己手动清栈。
另外求值顺序和压栈顺序是两回事,C语言里几乎没有对求值顺序做规定,编译器完全可以先求出值再决定如何压栈。
所以是编译器的压栈问题
也就是说,gcc是内核,DevC++是外壳.
C/C++语言没有规定具体压栈顺序,没有标准化时C语言支持没有固定参数的函数,所以为了实现这个当时多数编译器都采用从右往左压栈,但是标准化的要求至少有一个固定参数,这个限制就没有必要了。不过从右到左几乎已经成为了C编译器惯用的顺序。C++的_stdcall方式也是采用从右到左,不同的只是不需要调用者自己手动清栈。
另外求值顺序和压栈顺序是两回事,C语言里几乎没有对求值顺序做规定,编译器完全可以先求出值再决定如何压栈。
所以是编译器的压栈问题
展开全部
printf("%d,%d,%d,%d,%d,%d,%d\n",i++,++i,i--,--i,i--,i--,i+5);
C标准规定是未定义的行为,编译器爱怎么实现 就怎么实现 。
此种代码没有任何意义。
C标准规定是未定义的行为,编译器爱怎么实现 就怎么实现 。
此种代码没有任何意义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-06
展开全部
printf是从后开始计算,放入缓冲流,然后倒着输出,所以前面的反而更大,分开写就不会了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看这个吧。这个问题跟编译器有关,如果不想深究,也没关系的。
http://www.360doc.com/content/11/0824/12/3398926_142890977.shtml
http://www.360doc.com/content/11/0824/12/3398926_142890977.shtml
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询