class Program19
{
static void Main(string[] args)
{
// true,或false
Console.WriteLine("bool占用:" + sizeof(bool));
//0-255
Console.WriteLine("byte 占用:"+sizeof(byte));
//-128 到 127
Console.WriteLine("sbyte 占用:" + sizeof(sbyte));
Console.WriteLine("char 占用:" + sizeof(char));
//-79228162514264337593543950335 到 + 79228162514264337593543950335
Console.WriteLine("decimal 占用:" + sizeof(decimal));
//±5.0 × 10−324 到 ±1.7 × 10308 15-16 位
Console.WriteLine("double 占用:" + sizeof(double));
//±1.5 x 10−45 至 ±3.4 x 1038 7位
Console.WriteLine("float 占用:" + sizeof(float));
//-2,147,483,648 到 2,147,483,647 带符号的 32 位整数
Console.WriteLine("int 占用:" + sizeof(int));
//0 到 4,294,967,295 无符号的 32 位整数
Console.WriteLine("uint 占用:" + sizeof(uint));
//-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 64 位带符号整数
Console.WriteLine("long 占用:" + sizeof(long));
//0 到 18,446,744,073,709,551,615 无符号 64 位整数
Console.WriteLine("ulong 占用:" + sizeof(ulong));
//-32,768 到 32,767 有符号 16 位整数
Console.WriteLine("short 占用:" + sizeof(short));
//0 到 65,535 无符号 16 位整数
Console.WriteLine("ushort 占用:" + sizeof(ushort));
byte[] bytes = Encoding.UTF8.GetBytes("我们");
Console.WriteLine(Encoding.GetEncoding("gb2312").GetBytes("我们").Length);
Console.WriteLine(bytes.Length);
Console.ReadLine();
}
}

string占用的字节数和编码有关系,如果是UTF8则每个汉字占用3个字节,如果是gb2312则占用2个字节

2、而在实际的运行中,到底分配多少字节是和编译器有关系,来看一下c#生成好的EXE文件的IL代码:

 static void Main()
{
int a8 = ;
int a = ;
Int16 a16 = ;
Int32 a32 = ;
Int64 a64 = ;
Int64 aa64 = ;
Int64 aaa64 = ;
Console.WriteLine(a);
Console.WriteLine(a8);
Console.WriteLine(a16);
Console.WriteLine(a32);
Console.WriteLine(a64);
}

看一下IL代码:

.method private hidebysig static void  Main() cil managed
{
.entrypoint
// Code size 75 (0x4b)
.maxstack
.locals init ([] int32 a8,
[] int32 a,
[] int16 a16,
[] int32 a32,
[] int64 a64,
[] int64 aa64,
[] int64 aaa64)
IL_0000: nop
IL_0001: ldc.i4.
IL_0002: stloc.
IL_0003: ldc.i4.s
IL_0005: stloc.
IL_0006: ldc.i4 0x7fff
IL_000b: stloc.
IL_000c: ldc.i4 0x7fffffff
IL_0011: stloc.
IL_0012: ldc.i8 0x7fffffffffffffff
IL_001b: stloc.s a64
IL_001d: ldc.i4.
IL_001e: conv.i8
IL_001f: stloc.s aa64
IL_0021: ldc.i4.s
IL_0023: conv.i8
IL_0024: stloc.s aaa64
IL_0026: ldloc.
IL_0027: call void [mscorlib]System.Console::WriteLine(int32)
IL_002c: nop
IL_002d: ldloc.
IL_002e: call void [mscorlib]System.Console::WriteLine(int32)
IL_0033: nop
IL_0034: ldloc.
IL_0035: call void [mscorlib]System.Console::WriteLine(int32)
IL_003a: nop
IL_003b: ldloc.
IL_003c: call void [mscorlib]System.Console::WriteLine(int32)
IL_0041: nop
IL_0042: ldloc.s a64
IL_0044: call void [mscorlib]System.Console::WriteLine(int64)
IL_0049: nop
IL_004a: ret
} // end of method Program2::Main

可以看到,同样定义的是Int64的类型,1个是8,1个是32,1个是

前两个都是4个字节:ldc.i4.   ldc.i4.s

而后一个就是8个字节:ldc.i8

int占几个字节?的更多相关文章

  1. 小白学python第1问: int 占几个字节?

    windows 64位机器,python3.7:后面的文章中,没有特别说明的话,都是在该环境下运行 int 占几个字节? C语言中(GCC编译器),int 占据4个字节,python呢? 我们用pyt ...

  2. 一个int类型究竟占多少个字节

    一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes ...

  3. 数据类型对应字节数(32位,64位 int 占字节数)

    数据类型对应字节数(32位,64位 int 占字节数) 可用如sizeof(char),sizeof(char*)等得出 32位编译器: char :1个字节 char*(即指针变量): 4个字节(3 ...

  4. 在C\C++中char 、short 、int各占多少个字节

    在C\C++中char .short .int各占多少个字节 : #include <bits/stdc++.h> using namespace std; int main() { co ...

  5. Java中char,short,int,long占几个字节和多少位

    1.字节:byte:用来计量存储容量的一种计量单位:位:bit 2.一个字节等于8位  1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字. 整型: b ...

  6. int 占一个机器字长

    int与short int是不一样的. C++标准规定,int占一个机器字长.在32位系统中int占32位,也就是4个字节, 而在老式的16位系统中,int占16位,即2个字节. 而C++标准中只限制 ...

  7. JAVA有哪些数据类型?基本数据类型各占多少个字节

    java的数据类型分为:基本数据类型和引用数据类型. 基本数据类型各占多少个字节: 数据类型 字节 默认值 byte 1 0 short 2 0 int 4 0 long 8 0 float 4 0. ...

  8. C++ string类型占几个字节

          在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多.这篇文章并不是讲解 ...

  9. java中boolean类型占几个字节

    java的基本数据类型中,boolean只有两种状态,默认值为false.取值范围是{true,false},理论上占1bit,实际上: 1.单个的boolean 类型变量在编译的时候是使用的int ...

随机推荐

  1. centos 7编译安装Python3.6.1

    1.准备必要的库文件 yum install -y gcc zlib-devel openssl-devel sqlite-devel 2.进入源代码包 ./configure prefix=/usr ...

  2. 【文档】一、Mysql Binlog概述

    Binlog是一系列日志文件,他们包含的内容是Mysql数据内容的改变.如果想开启binlog功能,需要在启动时带上--log-bin参数. binlog是从Mysql3.23.14版本开始的.它包含 ...

  3. 【开源组件】FastDFS集群搭建与实战

    FastDFS是一个轻量级的分布式文件系统,在实际生产环境往往以集群的形式部署,保证了服务的高可用.本文重点阐述FastDFS集群的搭建和项目实战. 工作流程 上传流程图 下载流程图 基本概念可参考作 ...

  4. java中,方法可以访问他的类对象的任何私有特性

    java中,方法可以访问他的类对象的任何私有特性 读一本书(Core Java for the Impatient)时,发现这个注意,以前的时候没有在意,今天仔细想想发现记忆不深刻.记录一下 下面代码 ...

  5. FocusBI: 微软商业智能教程目录介绍(原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  6. 有关css和js针对不同浏览器兼容的问题

    首先谈一下浏览器,虽然现在ie依然是浏览器市场的老大,大约占有67%的份额,但是由于其各方面的欠缺,用户开始选择其他浏览器作为自己浏览网页的主要 工具,比如firefox.theworld.maxth ...

  7. td 不换行 隐藏显示多余的部分(转)

    转自:http://sha-tians.iteye.com/blog/1996162 table中td固定宽度后overflow:hidden不生效的问题 博客分类: html/css/js   前两 ...

  8. Java - 谨慎实现Comparable接口

    类实现了Comparable接口就表明类的实例本身具有内在的排序关系(natural ordering). 因此,该类可以与很多泛型算法和集合实现进行协作. 而我们之需要实现Comparable接口唯 ...

  9. layui的分页

    layui的分页需要后台配合,这边我使用的是pagehelper @RequestMapping("findGoods") private String findGoods(Int ...

  10. POJ 2184(01背包)(负体积)

    http://poj.org/problem?id=2184 http://blog.csdn.net/liuqiyao_01/article/details/8753686 对于负体积问题,可以先定 ...