前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >64位系统下的变量长度

64位系统下的变量长度

作者头像
sean.liu
发布2022-09-07 10:50:48
5240
发布2022-09-07 10:50:48
举报

摘要

刚学C/C++语言时,电脑主要还都是32位的,不像现在计算机主流平台都已经变成了64位。那个时候,知道int长度是32位,long long是64位,尽量避免使用long。 那么到了64位系统中,是不是int也是64位了呢?跑个程序验证一下。 本文主要讨论C/C++语言和Golang,因为解释性的语言对于这个并不需要关心。

结论

不想看下面内容的可以直接看结论。 大部分的变量并没有区别,比如char是8位,double是64个位。 最关键的是int和指针变量,从测试看,常用的系统(windows/Linux)都是兼容32位系统的标准,但是在C/C++的标准里,并没有定义变量长度,所以最终是由编译器决定的。更详细的分析,可以看这篇博客 参考文档。 不过我们最常用的其实也是X86平台,Linux和windows,所以姑且可以认为是统一的标准。还不放心就只能到平台上试跑下了。

C/C++

类型\平台

32位平台,32位编译器

64位平台,64位编译器

int

32位

32位

指针(比如*int)

32位

64位

64位平台,64位编译器下,int长度是32.

Golang

类型\平台

32位平台,32位编译器

64位平台,64位编译器

int

32位

64位

int64

64位

64位

64位平台,64位编译器下,int长度是64.

64位系统下为什么指针变成64位了?

64位系统和32位系统的区别在于数据存取的宽度。指针的作用是用于指向内存地址的,自然需要兼容系统。 所以千万注意,不要把指针传给int

用int和int64在64位系统下性能上有区别么?

没必要用int64时,还是用int比较好。虽说读取之类的单指令周期二者没什么区别,但如果需要多指令的运算,比如取模,int64所需的计算量会增多。 另外,用int64更占用内存。

验证

C语言的变量长度

查看方法

测试

代码语言:javascript
复制
#include <iostream>
#include "stdio.h"
using namespace std;

int main()
{
   printf("char %ld\n",sizeof(char));
   printf("int %ld\n",sizeof(int));
   printf("long %ld\n",sizeof(long));
   printf("long long %ld\n",sizeof(long long));
   return 0;
}

64位Linux输出

代码语言:javascript
复制
char 1
int 4
long 8
long long 8

sizeof输出的单位是byte。一个byte是8位。

Golang语言变量长度

测试

代码语言:javascript
复制
package main

import "fmt"
import "unsafe"

func main() {
    var x int
    var y int32
    var z int64
    fmt.Printf("int %d\n", unsafe.Sizeof(x))
    fmt.Printf("int32 %d\n", unsafe.Sizeof(y))
    fmt.Printf("int64 %d\n", unsafe.Sizeof(z))
}
输出
代码语言:javascript
复制
int 8
int32 4
int64 8

可以看出,64位平台,golang的int是64位长度

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020年1月30日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
    • 结论
      • 64位系统下为什么指针变成64位了?
      • 用int和int64在64位系统下性能上有区别么?
  • 验证
    • C语言的变量长度
      • Golang语言变量长度
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档