目录
一、数据类型
1、常见数据类型
C语言是一种结构化的程序设计语言
我们编程是为了解决生活中的问题,使用计算机语言来编程,计算机语言得有能力描述生活中的问题,所以C语言提供了丰富的数据类型来描述生活中的各种数据。
char // 字符类型 , 例如 a,b,c
int // 整型类型 , 例如 1,2,3
float // 浮点型类型, 例如 0.1
_Bool // 布尔类型 , 表示真和假
//VS2022,x64
#include<stdio.h>
#include<stdbool.h> //使用 _Bool 必须包含此头文件
int main()
{
char n = 'a';
printf("%c\n", n);
int num = 3;
printf("%d\n", num);
float y = 3.14;
printf("%lf\n", y);
_Bool flag = true; //布尔类型变量的取值是 true 和 false
if (true)
{
printf("great\n");
}
return 0;
}
2、各种数据类型的长度
我们使用 sizeof 来计算各种数据类型的长度
sizeof 是一个关键字,也是操作符,专门是用来计算sizeof的操作符数的类型长度的,单位是字 节。
sizeof 操作符的操作数可以是类型,也可是变量或者表达式。 注意: sizeof 中的表达式不计算
//VS2022,x64
#include<stdio.h>
#include<stdbool.h>
int main()
{
printf("%zd\n", sizeof(_Bool)); // 1
printf("%zd\n", sizeof(short)); // 2 short int(短整型)
printf("%zd\n", sizeof(int)); // 4
printf("%zd\n", sizeof(long)); // 4 long int(长整型)
printf("%zd\n", sizeof(long long)); // 8 long long int(更长的整型)
printf("%zd\n", sizeof(char)); // 1
printf("%zd\n", sizeof(float)); // 4 单精度浮点数
printf("%zd\n", sizeof(double)); // 8 双精度浮点数
printf("%zd\n", sizeof(long double));// 8
//sizeof中的表达式不计算
int a = 0;
short b = 1;
printf("%zd\n", sizeof(b = a + 100));// 2
printf("b = %d\n", b); // b 仍然等于 1
return 0;
}
3、signed 和 unsigned
C语言使用 signed 和 unsigned 关键字修饰 字符型和整型 类型
signed 关键字,表示一个类型带有正负号,包含负值;
unsigned 关键字,表示一个类型不带正负号,只有表示零和正整数。
对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。
由于这是默认情况,关键字 signed 一般都省略不写,但是写了也不算错。
unsigned 的好处在于,同样长度的内存能够表示的最大整数值,增大了一倍。
signed int a = 100; // 等同于 int
unsigned int b = 100;
//以 short int 类型为例
signed short int c = 100; // signed short int 的取值范围是:-32768~32767,
// 最⼤值是32767
unsigned short int d = 100; // unsigned short int 的取值范围是:0~65535,
// 最⼤值增⼤到了65535
signed int 的取值范围可以参看 limits.h 中给出的定义。
#define SHRT_MIN (-32768) // short int 的最小值
#define SHRT_MAX 32767 // short int 的最大值
#define USHRT_MAX 0xffff // unsigned shor int 的最大值
#define INT_MIN (-2147483647 - 1) // int 的最小值
#define INT_MAX 2147483647 // int 的最大值
【注意】
C语言规定 char 类型默认是否带有正负号,由当前系统决定。 这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。 这⼀点与 int 不同, int 就是等同于 signed int 。
二、小小注解
1、main 函数
每个 C 语言程序不管有多少行代码,都是从 main 函数开始执行的, main 函数是程序的入口, main 函数也被叫做:主函数。 main 前面的 int 表示 main 函数执行结束的时候返回一个整型类 型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。
2、printf 、库函数 和 头文件
代码中使用了 printf 函数,实现了在屏幕上的信息的打印。
简单的介绍一下 printf , printf 是一个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。
我们在使用库函数的时候,是需要包含头文件的,比如: printf 函数需要包含的就是 stdio.h 这个头文件
C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数。
一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用,要包含对应的头文件。
//这些称为占位符,会被后面的值替代
//目前与 printf 搭配食用最佳
%d // 打印整型
%c // 打印字符
%s // 打印字符串
%f // 打印单精度浮点数
%lf // 打印双精度浮点数
%zd //sizeof的计算结果是 size_t 类型,所以用 %zd
3、怎么看limits.h中的定义
左键选中,右键,点击 转到文档(G)<limits.h>
出现以下画面就成功啦,往下翻就能看到关于整型的取值范围。
其他头文件的查看也是一样哒,浮点型的取值范围在另一个头文件 float.h
完