JAVA能在任何平台上执行是因为有虚拟机的原因,但是c和C++不是也有虚拟机吗

2024-11-15 15:48:43
推荐回答(4个)
回答1:

C和C++没有虚拟机吧,他们是直接由编译器编译成汇编语言,再汇编成机器语言进行执行,由于C和C++没有虚拟机所以在在不同的系统环境下需要经过细节上的改变来适应不同机器上的编译器。而java在不同的平台上是不需要改变的,甚至不需要再次编译,因为虚拟机将平台上的差异处理掉了。

回答2:

C/C++ 没有官方标准的虚拟机系统。但是有解释器,同时支持预编译代码的执行。最有代表的Cint(C/C++ interpreter, C-int)。能支持大部分的C/C++语法和特性。其最大的优势是将C/C++作为脚本使用。和真正意义上的虚拟机系统是不同的,其实际使用意义并不大。同时虚拟机系统并不是万能的,并不是所谓的能在任何平台运行,虚拟机系统的局限性仍然存在。
虚拟机和解释器的不同之处请参考编译原理虚拟机章节。

Cint系统一般用于教学,很少实际使用,当然也存在某些shell系统采用了可以无缝调用的Cint系统。

回答3:

c/c 哪有虚拟机啊。它们都是直接编译成目标机器的机器码来执行的。所以最多只能达到源代码级别的兼容。

回答4:

哪有。。。。。。。。。那是编译器