C语言(3):数据类型

C语言中的数据类型

在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。

序号类型描述
1

基本数据类型:

  • 整型(int):用于表示整数,如-10、0、100等。
  • 浮点型(float、double):用于表示带小数点的数值,如3.14、2.5等
  • 字符型(char):用于表示单个字符,如'a'、'b'等。
  • 布尔型(bool):用于表示真或假,取值为true或false。
2

派生数据类型:

  • 数组(array):用于存储同一类型的多个元素,如int numbers[5]。
  • 结构体(struct):用于封装多个不同类型的数据,如struct Student{char name[20]; int age;}
  • 联合体(union):用于在同一内存空间存储多个不同类型的数据,只能同时存储一个成员的值
  • 枚举(enum):用于定义一组有限的命名常量
3

指针类型(pointer):用于存储变量的内存地址,可进行间接访问和修改变量的值。

数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。

整数类型

类型存储大小数值范围
char1字节-128-127或0-255

unsigned char

1字节0-255
signed char1字节-128-127
short2字节-32767-32767
unsigned short2字节0-65535
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

long4字节-2,147,483,648 - 2,147,483,647
unsigned long4字节0 - 4,294,967,295

注意,各种类型的存储大小与系统位数有关,但目前通用的以64位系统为主

为了得到某个类型或某个变量在特定平台上的准确大小,可以使用siezof运算符.

表达式: sizeof(type)

#includ<stdio.h>
#includ<stdio.h>

int main(){

    printf("int的存储大小: %lu \n",sizeof(int)); 

  //"%lu"是用来格式化输出无符号长整型(unsigned long)的格式控制符

    return 0;
}

浮点类型

类型存储大小值范围精度
float4字节1.2E-38 - 3.4E+3386位有效位
double8字节2.3E-308 - 1.7E+30815位有效位
long double16字节3.4E-4932 - 1.1E+493219位有效位
#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;
}

输出结果:

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

void类型

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

类型转换

在C语言中,我们可以使用类型转换将一种数据类型转换为另一种数据类型。类型转换的语法格式为:

(type) expression

其中,type表示要转换的目标数据类型,expression表示需要转换的表达式或变量。

C语言中的类型转换主要有两种:隐式类型转换和显式类型转换。

隐式类型转换

隐式类型转换(自动类型转换):在某些情况下,C语言会自动进行类型转换,以保证表达式的结果正确。常见的隐式类型转换包括:

  • 当表达式中包含不同类型的操作数时,会根据一定的规则进行自动转换,以保证操作能够进行。例如,当一个操作数是int类型,另一个是float类型,那么C语言会将int类型的操作数转换为float类型,使得两个操作数的类型相同。

  • 当赋值语句中右侧的表达式的类型与左侧变量的类型不匹配时,会进行自动类型转换。例如,将一个float类型的值赋给一个int类型的变量时,C语言会将float类型的值转换为int类型,然后赋给变量。

  • int num1 = 10;
    long num2;
    num2 = num1; // 将int类型的值隐式转换为long类型
     
    

    float num1 = 3.14;
    double num2;
    num2 = num1; // 将float类型的值隐式转换为double类型
     
    

显式类型转换(强制类型转换)

显式类型转换(强制类型转换):在某些情况下,我们可以使用强制类型转换来显式地改变一个表达式或变量的数据类型。显式类型转换可以使用括号将目标数据类型括起来,并将要转换的表达式或变量放在括号内。

(type) expression

需要注意的是,进行显式类型转换时,可能会发生数据丢失或截断的情况,因此需要谨慎使用,并确保转换后的数据仍然能够正常使用。

以下是一个使用显式类型转换的示例:

int a = 20;
float b;

b = (float) a;  // 将int类型的a转换为float类型,并赋给b

在C语言中,我们可以使用隐式类型转换和显式类型转换来改变数据的类型。隐式类型转换是自动进行的,而显式类型转换需要我们手动指定转换的目标数据类型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值