int(long)类型长度由啥决定(好)|__int64是微软virtual C++编译器定义的基本数据类型非C++标准规范(协会)里定义的一种基本数据类型
来源:互联网 发布:spss数据标准化处理 编辑:程序博客网 时间:2024/05/16 09:29
sizeof(int/long/...)
摘要:
__int64(也是一种基本数据类型,是微软的virtual C++编译器定义的一种基本数据类型,而不是C++标准规范(协会)里定义的一种基本数据类型)也是由完全由编译器决定,固定大小为8字节,不受运行环境(的CPU和操作系统位数)影响。
Usually:整型 int 4字节长整型 long 4字节字符型 char 1字节单精度 float 4字节双精度 double 8字节长双精度 long double 8字节注释:long是修饰数据类型的一个修饰词。例如,长双精度就是说 long double ,而长整型就是说 long int,简称long。长长整型就是说long long int,简称long long。另外,没有三个以及以上long修饰的类型的。如long long long long。 换算关系:1GB=1024MB1MB=1024KB1KB=1024Byte1Byte=8Bit一个字节等于八个位
附加说明:
(1)int类型的长度有什么决定??
int的字节长度是由CPU和操作系统(位数)(中的)编译器共同决定的,一般情况下,主要是由操作系统决定,比如,你在64位AMD的机器上安装的是32位操作系统,那么,int默认是32位的;如果是64位操作系统,64位操作系统分为两种,1种是int为32位long为64位,2种intlong均为64位。之所以说int同时也与编译器有关,编译器完全可以在32位系统模拟64位整数,例如Unix/Linux下的long long和Windows下的__int64均为64位整数(,虽然Unix/Linux下的以及Windows下的int依旧均为32位整数)。这个例子举的不对,因为我们是在说int类型的长度而不是__int64(或是long long)。
---------------------------------------------------------------------
16位机器是2个字节,32位机器下面是4个字节
这个操作系统的位数有关,一个int的大小是操作系统的一个字长,TC是16位系统程序,所以int是16bit就是两个字节,在32位linux和32位Windows下,都是4个字节,也就是目前最常用的VC和gcc结果。
---------------------------------
gcc中的int和long类型长度都为4字节
现阶段32bit(即4字节)PC一般在绝大多数编译器下是32bit,当然也有的编译器是16bit(比如turboC)。最关键一点,只能小,不能大,这是因为即使编译器把它当作大于32bit了,但因为CPU字长只有32bit,所以也只能处理32bit的数。
同时需要注意的就是在c标准中只是对不同的数据类型的数字范围设置了下界,但是没有上界。
疑问:
1、CPU为64位,安装的操作系统是32位,该操作系统下的编译器所支持的int为几字节??
偏向于4字节。
2、long int数据类型
随着宏__WORDSIZE值的改变,long int数据类型的大小也会发生改变。如果__WORDSIZE的值为32,则long int和int类型一样,占有32位。在Linux GCC4.0-i386版本中,默认情况下__WORDSIZE的值为32.其定义如下:
//come from /usr/include/bits/wordsize.h
#define __WORDSIZE 32
在64位机器上,如果__WORDSIZE的值为64, long int类型数据所占内存空间为64位。
这个说明long不像int的字节长度那样受CPU和操作系统位数影响,而是由完全由编译器决定。long只受编译器里定义的宏__WORDSIZE值的影响。可以说是固定大小,相对于包含int的程序在不同环境运行时int大小受运行环境(的CPU和操作系统位数)影响。像__int64(也是一种基本数据类型,是微软的virtual C++编译器定义的一种基本数据类型,而不是C++标准规范(协会)里定义的一种基本数据类型)也是由完全由编译器决定,固定大小为8字节,不受运行环境(的CPU和操作系统位数)影响。
int的字节长度那样受(第二级别影响力的)CPU和操作系统位数影响,是因为(第一级别影响力的)编译器完全不管int大小而放任其受(第二级别影响力的)CPU和操作系统位数影响。
Linux基本数据类型大小——int,char,long int,long long int(/usr/include/limit.h文件对Linux下数据类型的限制及存储字节大小的说明)
sizeof(Type *)=??
==================
指针的大小是由内存寻址空间决定的,即地址总线决定。
一般32位机寻址空间4G,所以指针占4字节;
一般16 8位的单片机寻址空间是64k,所以指针占2字节
- int(long)类型长度由啥决定(好)|__int64是微软virtual C++编译器定义的基本数据类型非C++标准规范(协会)里定义的一种基本数据类型
- 编译器定义的C/C++语言各种基本数据类型的取值范围用程序输出
- 编译器定义的C/C++语言各种基本数据类型的取值范围
- C/C++基本数据类型长度(转)
- C标准库定义的UNIX系统的基本数据类型
- c语言基本数据类型(short、int、long、char、float、double)
- int,long,long long,__int64数据类型的取值范围
- c语言中基本数据类型的长度
- C语言基本数据类型的长度
- 关于基本数据类型的定义
- C语言的基本数据类型(9)
- C语言中各种数据类型的长度 sizeof char, short, int, long, long long
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- 关于C和C++中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围
- C的基本数据类型
- C的基本数据类型
- C++:基本的数据类型
- c语言基本数据类型short、int、long、char、float、double
- ioctl(sock, SIOCGIFHWADDR, &ifr)获取网卡mac地址
- android学习 -- 四大适配器显示ListView
- java递归遍历Xml
- uva 434 - Matty's Blocks(贪心)
- html 5 拖拽示例代码
- int(long)类型长度由啥决定(好)|__int64是微软virtual C++编译器定义的基本数据类型非C++标准规范(协会)里定义的一种基本数据类型
- c-namespace
- Windows转到linux中,文件乱码,文件编码转换
- LeetCode 35 Search Insert Position
- Android传感器概述(八)
- Linux笔记(八)-权限管理
- Modifying the Navigation Stack
- 个人真实学习Java经验
- struct ethhdr、ether_header、iphdr、tcphdr、udphdr结构体定义