c语言的基本类型

简介: c语言的基本类型

c语言的基本类型
C语言是一种高效、灵活且广泛使用的编程语言,其基础之一是数据类型。数据类型决定了变量或表达式存储信息的种类以及如何解释这些存储的位。在C语言中,数据类型大致可以分为几大类:基本数据类型、枚举类型、指针类型和结构体(包括联合体)等。本文将详细探讨C语言的基本数据类型,包括整型、浮点型、字符型和枚举类型,并通过代码示例来加深理解。

一、整型(Integer Types)

整型数据用于存储整数值,C语言提供了多种整型类型,以适应不同大小和范围的整数需求。主要包括以下几种:
int:标准整数类型,其大小和范围依赖于编译器和操作系统,通常是16位、32位或64位。
short int 或 short:比int类型占用更少的存储空间,通常是16位。
long int 或 long:比int类型占用更多的存储空间,具体位数也依赖于系统,但至少为32位。
long long int 或 long long:C99标准引入,比long类型占用更多的存储空间,至少为64位。
unsigned int、unsigned short、unsigned long、unsigned long long:上述类型的无符号版本,即只能存储非负值,其范围是正数加上零。
示例代码

#include <stdio.h> 

int main() { 
int a = 10; 
short int b = -100; 
long int c = 1234567890L; // 注意L后缀,表明这是一个long int字面量 
long long int d = 1234567890123456789LL; // 注意LL后缀 
unsigned int e = 4294967295U; // U后缀表明是无符号数 

printf("a = %d\n", a); 
printf("b = %d\n", b); 
printf("c = %ld\n", c); // 使用%ld打印long int 
printf("d = %lld\n", d); // 使用%lld打印long long int 
printf("e = %u\n", e); // 使用%u打印unsigned int 

return 0; 
}

二、浮点型(Floating-Point Types)

浮点型数据用于存储有小数部分的数值。C语言提供了两种主要的浮点类型:

1. float

float类型是单精度浮点型,它通常占用4个字节(32位)的内存空间。尽管float类型提供了相对较小的存储空间,但它仍然能够表示一个很大范围的数值,包括非常小和非常大的数(通过指数部分表示),以及具有一定精度的小数(通过尾数部分表示)。然而,由于float的精度有限(大约7位十进制),它可能不适合需要高精度计算的场景。

2. double

double类型是双精度浮点型,它占用8个字节(64位)的内存空间,提供了比float更高的精度(大约15到17位十进制)。由于double类型的精度更高,它成为了许多数值计算中的首选浮点类型。在C语言中,如果没有特别指定浮点数的类型,那么默认的类型就是double。

3. long double

long double类型是扩展精度浮点型,其精度和大小至少与double相同,但可能更大,这取决于具体的编译器和平台实现。虽然long double旨在提供比double更高的精度,但在许多系统上,long double和double实际上是相同的。因此,在使用long double时,最好先检查你的编译器和平台的文档。
浮点数的表示
浮点数在计算机内部是以一种近似的方式表示的,通常遵循IEEE 754标准。这个标准定义了浮点数的格式,包括符号位、指数位和尾数位。由于这种表示方式,浮点数的运算可能会引入舍入误差,特别是在进行多次运算或处理非常大或非常小的数时。
示例代码
下面是一个展示如何使用C语言中浮点类型的示例代码:

#include <stdio.h> 

int main() { 
float f = 3.14f; // 使用f或F后缀指定float类型 
double d = 3.141592653589793; // 默认是double类型,也可以显式写为3.141592653589793d或3.141592653589793D 
long double ld = 3.14159265358979323846264338327950288L; // 注意L后缀在C中通常用于整型字面量,但这里只是为了演示目的;实际上,long double字面量不需要特殊后缀,除非在特定编译器中有特殊规定 

// 注意:由于printf的%Lf格式说明符主要用于一些特定的编译器(如GNU C),标准C中并未明确定义用于long double的格式说明符 
// 因此,在某些编译器上,%Lf可能不起作用,或者需要包含特定的头文件或使用编译器特定的扩展 
// 这里我们使用%f和%Lf来演示,但请根据你的编译器和环境进行调整 
printf("f = %.2f\n", f); 
printf("d = %.10f\n", d); 
// 如果你的编译器支持%Lf,则使用下面的行;否则,可能需要调整为%f并接受可能的精度损失 
printf("ld = %.20Lf\n", ld); 

// 注意:由于浮点数的精度问题,打印结果可能与预期略有不同 

return 0; 
} 

// 注意:上面的代码中使用%Lf来打印long double类型可能不总是可行的。 
// 在标准C中,并没有直接指定用于long double的格式说明符。 
// 在实践中,你可能需要根据你的编译器和环境来选择%f(如果long double和double在内部表示上相同)或编译器特定的格式说明符。

请注意,由于浮点数的表示和运算特性,上述代码中的打印结果可能会与预期的数值略有不同,特别是当涉及到非常多的小数位时。此外,关于long double的打印,由于标准C并未定义统一的格式说明符,因此你可能需要根据你的编译器和环境来选择合适的说明符。

示例代码

#include <stdio.h> 

int main() { 
float f = 3.14f; // f或F后缀表明这是一个float字面量 
double d = 3.141592653589793; 
long double ld = 3.14159265358979323846; 

printf("f = %.2f\n", f); 
printf("d = %.10f\n", d); 
printf("ld = %.20Lf\n", ld); // 注意使用%Lf打印long double 

return 0; 
}

三、字符型(Character Types)

字符型数据用于存储单个字符(如字母、数字或标点符号)。C语言中的字符类型主要是char。char类型的大小通常为1字节,能够存储ASCII码表中定义的字符。此外,C语言还允许使用signed char和unsigned char,分别表示有符号和无符号的字符类型。
示例代码

#include <stdio.h> 

int main() { 
char ch1 = 'A'; 
signed char ch2 = -128; // 示例有符号字符 
unsigned char ch3 = 255; // 示例无符号字符 

printf("ch1 = %c\n", ch1); 
printf("ch2 = %d\n", ch2); // 使用%d打印,因为char会提升为int 
printf("ch3 = %u\n", ch3); //
相关文章
|
2天前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
4月前
|
存储 编译器 C语言
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
52 0
|
C语言
牛客网语法篇刷题(C语言) — 基本类型
牛客网语法篇刷题(C语言) — 基本类型
84 0
|
存储 C语言
【C语言】数据类型(基本类型、构造类型、类型转换)
不包含小数部分的数据都成为整型数据。在C语言中,根据数值的取值范围,可以将整型分为短整型(short int)、基本整型(int)、长整型(long int)。整型数据可以被修饰符signed和unsigned修饰,其中,被signed修饰的整型称为有符号的整型,被unsigned修饰的整型称为无符号的整型。
|
存储 Unix 编译器
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(二)
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(二)
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(二)
|
存储 Java 编译器
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(一)
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(一)
第七章 基本类型《C语言程序设计现代方法(第2版)》读书笔记(一)
|
Linux C语言
C语言基本类型之long long int
大家都知道 int 在 linux 系统下默认是占 4 个字节,数值表示范围是:-2147483648 ~ 2147483647。即使是无符号 unsigned int 类型表示范围:0—4294967295,大约 42 亿。
1160 0
|
2天前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2天前
|
存储 C语言
C语言程序设计核心详解 第七章 函数和预编译命令
本章介绍C语言中的函数定义与使用,以及预编译命令。主要内容包括函数的定义格式、调用方式和示例分析。C程序结构分为`main()`单框架或多子函数框架。函数不能嵌套定义但可互相调用。变量具有类型、作用范围和存储类别三种属性,其中作用范围分为局部和全局。预编译命令包括文件包含和宏定义,宏定义分为无参和带参两种形式。此外,还介绍了变量的存储类别及其特点。通过实例详细解析了函数调用过程及宏定义的应用。
|
8天前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。