在OCAML中uint16_t和uint8_t的等价物是什么

Jam*_*nco 3 ocaml

OCAML中C++的uint16_t和uint8_t相当于什么?我遇到了Int64,但我不确定它是否签名.另外我不确定在OCAML中C++中uint8_t的等价物是什么?

Jef*_*eld 6

C++的类型旨在匹配常见硬件的各种大小的整数.

OCaml的类型处于稍高的水平(或者至少是我看待它的方式).所以你不会找到C++的全部整数类型.

基本OCaml的语言定义只提到这些整数类型:

  • int:31位有符号值(在64位机器上更长;当前64位实现定义了63位有符号值)

  • char:8位无符号值

OCaml的语言扩展文件定义了几个整数类型:

  • int32:32位有符号值

  • int64:64位有符号值

  • nativeint :本机字大小的有符号值(32位机器上为32位; 64位机器上为64位)

这是整数类型!

这是一个显示所有这些类型的值的会话:

$ ocaml
        OCaml version 4.02.1

# 3;;
- : int = 3
# 'z';;
- : char = 'z'
# 3l;;
- : int32 = 3l
# 3L;;
- : int64 = 3L
# 3n;;
- : nativeint = 3n
#
Run Code Online (Sandbox Code Playgroud)

使用较窄整数值的一个原因是,当您拥有大量值时,可以节省空间.对于这种情况,有一个Bigarray模块,它支持8位和16位的有符号和无符号值的数组,以及上面列出的整数类型.