长整型和整形数据运算的不同
2016-07-26 22:49
274 查看
在32位系统中,long long类型为8个字节,int为4个字节,除了表面上看各自存储的数据大小不同,还有什么不同呢?
假设一个函数,它的形参类型为long long如下:
test(long long a)
获取形参a的汇编指令如下:
movl 8(%edp),%ebx
movl 12(%edp),%eax
这两条汇编指令就是获取形参a的值,movl 8(%edp),%ebx 指令把a的低32位存入%ebx中,movl 12(%edp),%eax 指令高32位存入%eax中
下面我们来接着看看类型为int的形参情况
test(int a)
movl 8(%edp),%ebx
获取形参a的值拷贝只需要一条汇编指令,所以在32位系统中使用int型性能比long long好,在能使用int类型的情况下就不要使用long long 除非数据大到必须使用long long
假设一个函数,它的形参类型为long long如下:
test(long long a)
获取形参a的汇编指令如下:
movl 8(%edp),%ebx
movl 12(%edp),%eax
这两条汇编指令就是获取形参a的值,movl 8(%edp),%ebx 指令把a的低32位存入%ebx中,movl 12(%edp),%eax 指令高32位存入%eax中
下面我们来接着看看类型为int的形参情况
test(int a)
movl 8(%edp),%ebx
获取形参a的值拷贝只需要一条汇编指令,所以在32位系统中使用int型性能比long long好,在能使用int类型的情况下就不要使用long long 除非数据大到必须使用long long
相关文章推荐
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- MySQL数据库中把int转化varchar引发的慢查询
- 深入解析unsigned int 和 int
- C语言中交换int型变量的值及转换为字符数组的方法
- asp Fix、Int、Round、CInt函数使用说明
- short与int转换的小例子
- 无法从 int? 转换为 int 运行时出现错误
- mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- Javascript将string类型转换int类型
- php下intval()和(int)转换使用与区别
- C#中把字符串String转换为整型Int的小例子
- Mysql数据库中把varchar类型转化为int类型的方法
- SQLServer中bigint转int带符号时报错问题解决方法
- sqlserver中将varchar类型转换为int型再进行排序的方法
- js中string转int把String类型转化成int类型
- 浅述int与string类型转换的两种方法
- Java中对AtomicInteger和int值在多线程下递增操作的测试
- Java中关于int和Integer的区别详解
- 使用Java代码将IP地址转换为int类型的方法
- python类型强制转换long to int的代码