在c语言中,int,char和short三种类型数据在内存中所占的字节数?
总结一下哈:针对大部分32位机器来说所占内存是: char 字符型 1个;int整型2 个;short 2 个;但是,不同的机器,和不同的编译软件下,都会不同。
所以你可以用sizeof()函数测试一下。例sizeof(char); 这里补充下我的答案,之前回答这个问题时候,自己还是一名单片机开发爱好者,C51单片机中的int确实是16位,两个字节。而现在的我从事应用软件开发,在这些编译器中(比如vs、gcc),int一般都是4位的(无论32位还是64位)。事实上,一个比较官方的解释是:编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的。c语言中整型数据的取值范围是怎么确定的?
int型为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之间。注意:int占多少个字节是由编译器决定的,ANSI标准定义int是占2个字节.uint型为无符号32位整数,占4个字节,取值范围在0~4,294,967,295之间。
BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。
其它类型:sbyte型为有符号8位整数,占1个字节,取值范围在128~127之间。
bytet型为无符号16位整数,占2个字节,取值范围在0~255之间。
short型为有符号16位整数,占2个字节,取值范围在-32,768~32,767之间。
ushort型为无符号16位整数,占2个字节,取值范围在0~65,535之间。
long型为64位有符号整数,占8个字节,取值范围在9,223,372,036,854,775,808~9,223,372,036,854,775,807之间。
ulong型为64位无符号整数,占8个字节,取值范围在0~18,446,744,073,709,551,615之间。
float型为32位单精度实数,占4个字节,取值范围3.4E+10的负38次方~3.4E+10的38次方之间。
double型为64位实数,占8个字节,取值范围1.7E+10的负308次方~1.7E+10的正308次方。
C语言32个关键字里,哪些可以用来声明定义变量?该注意些什么?
首先从C语言的特点来说,它是一种静态语言,所有变量都必须有一个类型,不管是基本类型,如int,char,float,double等,还是结构体、联合体、枚举等自定义类型,只要是类型关键字,都可以用来定义变量。此外,还有一个变量类型叫指针,又分为变量指针和函数指针,其中变量指针指向特定数据类型的地址,函数指针指向函数的入口地址,只要将变量类型与*号结合就可以声明指针。此处应该注意一点,指针是一个递归定义,也就是说指针可以指向一个指针,有点拗口,核心意思就是指针可以一直指下去。
函数指针类型的变量定义有点特殊,这里举一个例子:
定义:typedef void (*myFun)(int);
void FunImp(int param){/*函数内容*/}
使用:myFun = FunImp;myFun(10);
综上,记住一个关键点定义变量一定要有类型,这个不同于Python等动态语言,为了更清楚程序运行时的状态,最好能知道每种类型的变量在内存中占据的空间大小,这一点很关键,很多bug就是因为变量在不同的系统中占据的内存大小不一样导致的。比如对于Int类型,在32位系统占用4字节,而在64位系统就占据8字节。此外,还要清楚数据在内存中的大小端模式,即高位字节在前还是地位字节在前。