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月前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
46 2
|
3月前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
7月前
|
存储 编译器 C语言
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
【C语言】数据的存储(基本类型介绍、原码、反码、补码详解、大小端的理解、浮点数的存储规则)
97 0
|
C语言
牛客网语法篇刷题(C语言) — 基本类型
牛客网语法篇刷题(C语言) — 基本类型
92 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 亿。
1199 0
|
2月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
36 3
|
18天前
|
C语言
c语言调用的函数的声明
被调用的函数的声明: 一个函数调用另一个函数需具备的条件: 首先被调用的函数必须是已经存在的函数,即头文件中存在或已经定义过; 如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。 如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。 如果被调用的函数定义出现在主调函数之前可以不必声明。 如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明
31 6