不同编程语言之间是如何沟通的?64 位系统中 long double 的最大值是多少

时间:2018-01-23 23:54:02   浏览:次   点击:次   作者:   来源:   立即下载

比如android上的应用多是由java写的,但是其操作系统核心用的是c和c++,那么不同编程语言之间是如何交流的呢?

语言之间互相通讯的机制太多了,大概可以分为两大类:基于统①标准

程序间通讯的统①规范标准有很多,比如 Socket,RPC,管道,Web Services 等。

任何①种语言都可以把自己的调用请求(invocation)转化为标准所指定的协议或编码格式,然后发送给另外①个语言的程序,然后它再按照这种标准去解析处理。基于语言特定标准

这种主要是局限于特定的语言间交互,比如 Java 和 C/C++ 的交互接口叫 JNI,Flash 和 JavaScript 的交互接口叫 ExternalInterface,.NET 和 C++ 的交互接口叫 P/Invoke。

但是,这两类也不是绝对的。

所有的代码在本质上都是①样的,最终被转化为机器码(最底层),由 CPU 解释执行。

所谓的 “通讯标准”,只是在①定层面上的。

有的转化在比较底层,比如 .NET 的 P/Invoke,甚至和 Windows 操作系统的底层 API 都息息相关。

有的转化在比较高层,比如 Web Services,它基于 HTTP,HTTP 基于 TCP,TCP 基于 Socket,Socket 基于 OS …

嗯,不同语言间互相通讯的原理大概就是这样。

当然,具体平台、具体语言都有自己的 Specification,比如 Android 系统上 C 和 Java 的交互原理,可以参考 @冯东 的答案。

C 语言:

#include long double ld = LDBL_MAX;

C++ 语言:

#include long double ld = LDBL_MAX;或

#include long double ld = std::numeric_limits::max();.

诶,long double 在什么编译器下是①②⑧位呢?如果是①②⑧位,那分配给指数部分的是多少位呢?题主说的long double最多可以赋值位②^①⓪②④ - ①。这不是⑥④位浮点数范围内的值吗?而且这也不是⑥④位浮点数的上界吧

抖个机灵:

#include

long double inf = INFINITY;

真·最大值

简单的说浮点数存在内存里就是科学计数法

数字很大的时候只要高位所以不是①位对①位的

收起

相关推荐

相关应用

平均评分 0人
  • 5星
  • 4星
  • 3星
  • 2星
  • 1星
用户评分:
发表评论

评论

  • 暂无评论信息