在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统,其中函数的类型指的是函数返回值的类型。对象的类型决定该对象可取值的集合以及可以对该对象执行的操作。
房县网站建设公司成都创新互联,房县网站设计制作,有大型网站制作公司丰富经验。已为房县上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的房县做网站的公司定做!
C语言提供了下列几种基本数据类型
下表列出了关于字符类型的存储大小和值范围的细节:
下表列出了关于整数类型的存储大小和值范围的细节:
注:当用 long 或 short 限定符限定整型时,关键字 int 可以省路,通常很多人也习惯这样做。
下表列出了关于标准浮点类型的存储大小、值范围和精度的细节:
注:上述内容皆适用于常见的64位系统,对于其他具体机器,可能会出现不同存储大小。
short 与 long 两个限定符的引入可以为我们提供满足实际需要的不同长度的整型数。 int 通常代表特定机器中整数的自然长度。编译器可以根据硬件性能特性自主选择合适的类型长度,但要遵循下列限制: short 与 int 类型至少为16位,二 long 类型至少位32位,并且 short 类型不得长于 int 类型,而 int 类型不得长于 long 类型。
类型限定符 signed 与 unsigned 可用于限定 char 类型或任何整型。 unsigned 类型得数总是正值或0,并遵守算数模2^n,其中n是该类型占用的位数。例如,如果 char 对象占用8位,那么 unsigned char 类型变量的取值范围是0~255,而 signed char 类型变量的取值范围则为-128~127(在采用二进制补码的机器上)。不带限定符的 char 类型对象是否带符号取决于具体的机器,但可打印字符总是正值。
long double 类型表示高精度浮点数。同整型一样,浮点型的长度也取决于具体的实现, float 、 double 与 long double 类型可以表示相同的长度,也可以表示两种或三种不同的长度。
有关这些类型长度定义的符号常量以及其他与机器和编译器有关的属性可以在标准头文件 limits.h 与 float.h 中找到。
要想弄清这个问题,首先要看看这个函数的原型:
打开头文件:math.h
看到:
double _Cdecl _FARFUNC sqrt (double __x);
可见输入的自变量的类型是双精度型,输出结果也是双精度型。
因此,c语言使用sqrt函数得到的数据的类型是双精度型(double)。
你刚学吗?数据类型指的是整形 长整形 浮点型 字符型 布尔型 日期型等等。这些类型决定了你变量或常量占用内存的大小。
函数指你自己编写的或编译器内置的具有特定功能的程序代码集合。
比如 输出函数 printf 包含在头文件stdio.h里面。你可以直接调用来输出
再比如快排函数qsort包含在math.h里面 你可以直接调用用来对数组数据进行“快速排序”
你还可以自己编写小函数 ,以方便后面程序的多次调用。
当然在使用内置函数时候必须要知道他的头文件。而且在程序开始时先这样
#include stdio.h
#include math.h
在c语言中用没有函数判定一个变量的类型,可以使用sizeof来判断变量大小。
示例:
#include stdio.h
#include stdlib.h
int main(int argc,char **argv) //主程序
{
//对C语言内置类型的所占字节数的测试
printf("size of char is: %d\n",sizeof(char)); //字符型数据所占字节数 、
printf("size of short is: %d\n",sizeof(short)); //短整形数据所占字节数
printf("size of int is: %d\n",sizeof(int )); //整形数据
printf("size of short int is: %d\n",sizeof(short int)); //短整形
printf("size of long int is: %d\n",sizeof(long int)); //长整形数据
printf("size of float is: %d\n",sizeof(float)); //浮点型数据
printf("size of double is: %d\n",sizeof(double)); //双精度数据
//对字符及字符串数组所占字节数的测量
char a[] ={'a','b','c','d','e'};
printf("size of a[] is: %d\n",sizeof(a)); //输出数组a[]所占字节数
char b[]={"abcde"}; //初始化字符串b
printf("size of b[] is: %d\n",sizeof(b)); //数组b[]
char c[][3]={{'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'}}; //初始化二维字符型数组
printf("size of c[][] is: %d\n",sizeof(c)); //二维数组c所占字节数
printf("size of c[0] is: %d\n",sizeof(c[0])); //二维数组中的某行所占的字节数,例如第0行
printf("size of c[0][0] is: %d\n",sizeof(c[0][0])); //某行某个元素,例如第0行第0个元素
//对指针所占字节数的测量
char *p=0;
printf("size of *p is: %d\n",sizeof(p)); //字符型指针
system("pause");
return 0;
}
扩展资料
使用sizeof()计算数组长度
将sizeof用于 expr是并没有计算expr的值。特别是在sizeof *p中,指针p可以是一个无效地址,因为不需要对p做解引用操作。
对char类型或值为char类型的表达式做sizeof操作结果为1。对引用类型做sizeof操作,将返回存放此引用类型对象所需的内存空间大小。
对指针做sizeof操作,将返回存放指针所需的内存大小,注意,如果要获取该指针指向对象的大小,则必须对该指针进行解引用。对数组做sizeof操作等效于对其元素做sizeof操作的结果乘上数组元素的个数。
因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果初一sizeof其元素类型的结果,即可求出数组元素的个数:int sz = sizeof(ia)/sizeof(*ia);
通常将8位的块作为一个字节,32位或4个字节作为一个 “字”。一般的short为半个机器字长,int为一个机器字长。