流心
发布于 2024-04-24 / 2 阅读
0

C语言数据类型

C 语言数据类型用于声明不同类型的变量或函数的一个广泛系统,变量的类型决定了变量存储占用空间

C 语言的几种数据类型

  1. 基本数据类型:算术类型,整型 int 、字符型 char 、浮点型 float 、双精度浮点型 double

  2. 枚举类型:也是算术类型用来定义程序中只能赋予其一定的离散数值的变量

  3. void 类型:void 表示没有值的数据类型,通常用于函数返回值

  4. 派生类型:数组类型、指针类型和结构体类型

整数类型

类型

存储大小

值范围

char

1 字节

-128 - 127 或 0 - 255

unsigned char

1 字节

0 - 255

signed char

1 字节

-128 - 127

int

2 或 4 字节

-32768 - 32767 或 -2,147,483,648 - 2,147,483,647

unsigend int

2 或 4 字节

0 - 65,535 或 0 - 4,294,967,295

short

2 字节

-32,768 - 32,767

unsigned short

2 字节

0 - 65,535

long

4 字节

-2,147,483,648 - 2,147,483,647

unsigned long

4 字节

0 - 4,294,967,295

%lu 为 32 位无符号整数

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

浮点数

类型

存储大小

值范围

精度

float

4 字节

1.2E-38 到 3.4E+38

6 位有效位

double

8 字节

2.3E-308 到 1.7E+308

15 位有效位

long double

16 字节

3.4E-4932 到 1.1E+4932

19 位有效位

%E 为以指数形式输出单、双精度实数

#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;
}

void 类型

void 类型指定没有可用的值。

序号

类型与描述

1

函数返回为空
C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);

2

函数参数为空
C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void);

3

指针指向 void
类型为 void 的指针代表对象的地址,而不是类型。例如,内存分配函数 void malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。

类型转换

类型转换是将一个数据类型的值转换为另一种数据类型的值。

C 语言中有两种类型转换:

  • 隐式类型转换:隐式类型转换是在表达式中自动发生的,无需进行任何明确的指令或函数调用。它通常是将一种较小的类型自动转换为较大的类型,例如,将int类型转换为long类型或float类型转换为double类型。隐式类型转换也可能会导致数据精度丢失或数据截断。

  • 显式类型转换:显式类型转换需要使用强制类型转换运算符(type casting operator),它可以将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。

int i = 10;
float f = 3.14;
double d = i + f; // 隐式将int类型转换为double类型
double d = 3.14159;
int i = (int)d; // 显式将double类型转换为int类型

  • 整数:

    • char、short、int、long、long long

  • 浮点数:

    • float、double、long double

  • 逻辑

    • bool

  • 指针

  • 自定义类型

类型有什么不同?

  • 类型名称:int、long、double

  • 输入输出时的格式化:%d、%ld、%if

  • 所表达的数范围:char < short < int < float < double

  • 内存中所占据的大小:1个字节到16个字节

  • 内存中的表达形式:整数是二进制数(补码)、而浮点数是编码

sizeof

  • 是一个运算符,给出某个类型或者变量在内存所占用的字节数

  • sizeof(int)

  • sizeof(i)

#include <stdio.h>
int main()
{
    printf("sizeof(char)=%ld\n",sizeof(char));
    printf("sizeof(short)=%ld\n",sizeof(short));
    printf("sizeof(int)=%ld\n",sizeof(int));
    printf("sizeof(long)=%ld\n",sizeof(long));
    printf("sizeof(long long)=%ld\n",sizeof(long long));
    return 0;
}

sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=4
sizeof(long long)=8