Jenis data C


Dalam bahasa C, jenis data merujuk kepada sistem yang meluas untuk mengisytiharkan pembolehubah atau fungsi pelbagai jenis. Jenis pembolehubah menentukan berapa banyak ruang yang diduduki oleh storan pembolehubah dan cara corak bit yang disimpan ditafsirkan.

Jenis dalam C boleh dibahagikan kepada kategori berikut:

序号类型与描述
1基本类型:
它们是算术类型,包括两种类型:整数类型和浮点类型。
2枚举类型:
它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。
3void 类型:
类型说明符 void 表明没有可用的值。
4派生类型:
它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。

Jenis tatasusunan dan jenis struktur secara kolektif dipanggil jenis agregat. Jenis fungsi merujuk kepada jenis nilai pulangan fungsi. Dalam selebihnya bab ini kami akan memperkenalkan jenis asas, dan beberapa jenis lain akan diterangkan dalam bab berikut.

Jenis Integer

Jadual berikut menyenaraikan butiran tentang saiz storan dan julat nilai jenis integer standard:

类型存储大小值范围
char1 字节-128 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-128 到 127
int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short2 字节-32,768 到 32,767
unsigned short2 字节0 到 65,535
long4 字节-2,147,483,648 到 2,147,483,647
unsigned long4 字节0 到 4,294,967,295

Perhatikan bahawa saiz storan pelbagai jenis berkaitan dengan bilangan bit sistem, tetapi pada masa ini yang paling biasa ialah sistem 64-bit.

Berikut menyenaraikan perbezaan saiz storan antara sistem 32-bit dan sistem 64-bit (tetingkap adalah sama):

Dalam untuk mendapatkan jenis tertentu atau saiz tepat pembolehubah pada platform tertentu, anda boleh menggunakan operator saiz. Ungkapan sizeof(type) mendapat saiz storan dalam bait objek atau jenis. Contoh berikut menunjukkan mendapatkan saiz jenis int:

#include <stdio.h>#include <limits.h>int main(){
   printf("int 存储大小 : %lu \n", sizeof(int));   
   return 0;}

Apabila anda menyusun dan melaksanakan program di atas pada Linux, ia akan menghasilkan keputusan berikut:

int 存储大小 : 4

Jenis titik terapung

Jadual berikut menyenaraikan butiran tentang saiz storan, julat nilai dan ketepatan jenis titik terapung standard:

类型存储大小值范围精度
float4 字节1.2E-38 到 3.4E+386 位小数
double8 字节2.3E-308 到 1.7E+30815 位小数
long double16 字节3.4E-4932 到 1.1E+493219 位小数

Fail pengepala float.h mentakrifkan makro yang boleh digunakan dalam program untuk menggunakan nilai ini dan Butiran tambahan tentang perwakilan binari nombor nyata. Contoh berikut akan mengeluarkan ruang storan yang diduduki oleh jenis titik terapung dan nilai julatnya:

#include <stdio.h>#include <float.h>int main(){
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );   
   return 0;}

Apabila anda menyusun dan melaksanakan program di atas pada Linux, ia akan menghasilkan keputusan berikut:

float 存储最大字节数 : 4 float 最小值: 1.175494E-38float 最大值: 3.402823E+38精度值: 6

jenis void

Jenis void menyatakan bahawa tiada nilai tersedia. Ia biasanya digunakan dalam tiga situasi berikut:

Nombor siriJenis dan perihalan
1
序号类型与描述
1函数返回为空
C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);
2函数参数为空
C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void);
3指针指向 void
类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。
Fungsi mengembalikan null


Terdapat pelbagai fungsi dalam C yang tidak mengembalikan nilai, atau anda boleh katakan mereka kembali null. Jenis pulangan fungsi yang tidak mengembalikan nilai adalah nol. Contohnya

void exit (int status);
2<🎜>Parameter fungsi kosong<🎜>
Terdapat pelbagai fungsi dalam C yang tidak menerima sebarang parameter. Fungsi tanpa parameter boleh menerima kekosongan. Contohnya, <🎜>int rand(void);<🎜>
3<🎜>Penunjuk menghala ke void<🎜>
type ialah Penunjuk ke void * mewakili alamat objek, bukan jenisnya. Contohnya, fungsi peruntukan memori <🎜>void *malloc( size_t size );<🎜> mengembalikan penunjuk kepada void yang boleh ditukar kepada sebarang jenis data.
<🎜>Jika anda masih tidak dapat memahami sepenuhnya jenis void sekarang, jangan terlalu risau, kami akan menerangkan konsep ini secara terperinci dalam bab seterusnya. <🎜><🎜>