求助: poj上提交代码的c++指的什么是什么编译器? 和g++有什么不同啊?
为什么同一个代码用c++编译器的话内存只占g++编译器的一半,但是g++的速度快!这是为什么?...
为什么同一个代码用c++编译器的话内存只占g++编译器的一半, 但是g++的速度快!这是为什么?
展开
3个回答
展开全部
G++是一个GNU编译器,而C++是微软VC++的编译器。这两种编译器对不同的地方有优化,因此速度谁快谁慢不一定吧。有些题目使用C++提交相同的代码运行时间只有G++的八分之一,很是让人费解(可能是POJ是windows为基础的原因吧)。G++中对栈内存有优化,允许定义这样的数组:
int a[n]; (n为变量)。不过C++中有些可以使用的函数在G++中是没有的,这点要注意啊。所以很多C++编译通过的代码到G++上就CE了,对于G++也是如此。而且貌似两种编译器的编译的程序在浮点数精度控制上有差异。一些计算几何题目使用G++就WA,而使用C++就可AC。虽然我写代码一直用G++,但是这个的具体原因也搞不清出。
int a[n]; (n为变量)。不过C++中有些可以使用的函数在G++中是没有的,这点要注意啊。所以很多C++编译通过的代码到G++上就CE了,对于G++也是如此。而且貌似两种编译器的编译的程序在浮点数精度控制上有差异。一些计算几何题目使用G++就WA,而使用C++就可AC。虽然我写代码一直用G++,但是这个的具体原因也搞不清出。
更多追问追答
追问
谢谢你的详细回答
还有:
为什么同一个代码用c++编译器的话内存只占g++编译器的一半,我用的int数组
是不是c++中的int是2字节啊?我很纳美呀!
追答
不是,目前int大小基本上都是4bit,原因可能是编译器的优化问题(比如对堆栈的优化),也有可能是自身代码的问题导致的。有问题的代码可能会导致这种情况。
展开全部
g++编译的程序占用内存大,速度快,这很好理解啊,就是牺牲空间换取速度啊。
追问
可是是怎样做到的呢?
表示费解啊!
追答
那你要看编译器使用什么算法实现的啊,具体我不是很清楚,大致明白这个原理,如果你想详细了解的话,你去看一下C++和G++编译器的实现吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
g++ 是gnu的编译器
c++ 是vc++6.0
而且那个g++要新一些,推荐使用。
c++ 是vc++6.0
而且那个g++要新一些,推荐使用。
追问
谢谢你的详细回答
还有:
为什么同一个代码用c++编译器的话内存只占g++编译器的一半,我用的int数组
是不是c++中的int是2字节啊?我很纳美呀!
追答
C/C++的int大小取决于编译环境
如16位的Turbo C中int是2字节
而32位的VC++/G++ 等是4字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询