前言
介绍一下c语言的几种基本数据类型
一、C语言内置数据类型有哪几种
- 整型
- 字符型
- 布尔类型
二、详细介绍
1.int 整型(表示整数)
短整型
short [int] // []表示实际编写代码时可以省略
[signed] short [int] //有符号整数 可正可负可零
unsigned short [int] //无符号型 表示0以及正整数
整型
int
[signed] int
unsigned int
长整形
long [int]
[signed] long [int]
unsigned long [int]
长长整形(C99引入)
long long [int]
unsinged long long int
[singed] long long int
2.字符型(表示文本中的单个字符,字母、数字、标点符号、特殊字)
unsigned char
[signed] char
-
char
:char
的带符号性质在C语言标准中并没有明确定义。这意味着它的带符号性质可以因编译器和平台而异。在某些系统上,char
可能被视为有符号的,而在其他系统上,它可能被视为无符号的。这使得char
在跨平台开发时可能引发一些问题,因为它的带符号性质不一定是一致的。 -
signed char
:signed char
明确指定为带符号字符,它可以表示正数、负数和零。在大多数系统中,signed char
会被解释为有符号的,因此它的行为是明确的。
3.布尔型(c99引入,表示表示逻辑值,即真(true)或假(false))
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdbool.h>
#include<stdio.h>
int main()
{
_Bool target = true;
if (target)
printf("oi");
return 0;
}
三、数据长度
数据长度通常指的是一个数据类型所占用的内存空间的大小,通常以字节(bytes)为单位。数据长度与数据类型的选择和内存使用密切相关。在C和C++等编程语言中,可以使用sizeof
运算符来获取数据类型的大小。
#include <stdio.h>
int main()
{
printf("%zd\n", sizeof(char)); /*1*/ /* 1为1字节(1Byte)=8比特位(bit) 计算机中一个二进制位为1比特*/
printf("%zd\n", sizeof(unsigned char)); /*1*/
printf("%zd\n", sizeof(short int)); /*2*/
printf("%zd\n", sizeof(int)); /*4*/ /* 因此,例如;一个短整型能存放2**8个数字 */
printf("%zd\n", sizeof(long int)); /*4*/ /* unsigned 只能表示0和正整数,因此可以多出一 */
printf("%zd\n", sizeof(long long int)); /*8*/ /* 个用于限定符号的比特位,进而可以存放的数据(max)增加了一倍*/
printf("%zd\n", sizeof(float)); /*4*/
printf("%zd\n", sizeof(double)); /*8*/
printf("%zd\n", sizeof(long double)); /*8*/
printf("%zd\n", sizeof(_Bool)); /*1*/
return 0;
}
可以通过查看limit.h这一头文来查看各种数据类型的最大最小值范围
// 无符号字符的最大值
#define UCHAR_MAX 0xff
// 检查字符是否为无符号
#ifdef __CHAR_UNSIGNED__
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#else
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#endif
// 多字节字符最大长度
#define MB_LEN_MAX 5
// 有符号短整数的最小值和最大值
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767
// 无符号短整数的最大值
#define USHRT_MAX 0xffffU
// 有符号整数的最小值和最大值
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647
// 无符号整数的最大值
#define UINT_MAX 0xffffffffU
// 有符号长整数的最小值和最大值
#define LONG_MIN (-2147483647L - 1)
#define LONG_MAX 2147483647L
// 无符号长整数的最大值
#define ULONG_MAX 0xffffffffUL
// 长长整数的最小值和最大值
#define LLONG_MAX 9223372036854775807ll
#define LLONG_MIN (-9223372036854775807ll - 1)
// 无符号长长整数的最大值
#define ULLONG_MAX 0xffffffffffffffffull
// 8位整数的最小值和最大值
#define _I8_MIN (-127 - 1)
#define _I8_MAX 127
#define _UI8_MAX 0xffu
// 16位整数的最小值和最大值
#define _I16_MIN (-32767 - 1)
#define _I16_MAX 32767
#define _UI16_MAX 0xffffu
// 32位整数的最小值和最大值
#define _I32_MIN (-2147483647 - 1)
#define _I32_MAX 2147483647
#define _UI32_MAX 0xffffffffu
这些符号常量的定义使得程序员可以以可移植的方式编写代码,而不必关心特定平台上整数类型的具体取值范围
------------------------------------------------------------------
THANKS