数据类型介绍
-
数据类型:数据所属的类型
-
数据类型的作用:编译器预算数据分配的内存空间大小
变量
变量的语法
-
在计算机程序中,变量是用来存储数据的一个内存区域,并用一个名字来表示这个区域。
-
在程序运行过程中,其值可以改变
-
变量在使用前必须先定义,定义变量前必须有相应的数据类型
-
语法说明
示例代码:
#include <stdio.h>
int main() {
// 1. 定义1个int变量age同时赋值为18(这叫初始化),然后打印内容
int age = 18;
printf("%d\n", age);
// 2. 修改age的内容为20,然后打印内容
age = 20;
printf("%d\n", age);
// 3. 定义2个int变量,然后在分别赋值,然后再打印内容
int a, b;
a = 123;
b = 256;
printf("%d\n", a);
printf("%d\n", b);
// 4. 定义1个float类型变量height同时赋值,然后打印内容
float height = 1.77;
printf("%f\n", height);
return 0;
}
标识符命名
- 标识符是用户编程时使用的名字,用于给变量、函数、结构体等命名 。
命令规则
-
规则说明:
- 由数字, 字母, 下划线_组成
- 不能使用数字开头
- 不能使用关键字
- 严格区分大小写
-
关键字:已经被占用的名字
命令规范
好的命名习惯要做到见名知意
- 大驼峰
- 每个单词首字母大写, 例如: MyFirstName
- 小驼峰
- 第二个单词开始首字母大写, 例如: myFirstName
- 下划线命名
- 每个单词之间使用下划线连接, 例如: my_first_name
char类型
- 每个字符变量都会占用 1 个字节。
- 在给字符型变量赋值时,需要用一对英文半角格式的单引号(’ ')把字符括起来。
- 字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的ASCII码放到变量的存储单元中。
- char的本质就是一个1字节大小的整型。
ASCII值 | 控制字符 | ASCII值 | 字符 | ASCII值 | 字符 | ASCII值 | 字符 |
---|---|---|---|---|---|---|---|
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | " | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | \ | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ` |
31 | US | 63 | ? | 95 | _ | 127 | DEL |
示例代码:
#include <stdio.h>
int main() {
// 定义一个char类型变量,同时赋值为97,分别用%d,%c打印结果
char ch = 97;
printf("%d\n", ch);
printf("%c\n", ch);
// 定义一个char类型变量,同时赋值为'a',分别用%d,%c打印结果
char ch2 = 'a';
printf("%d\n", ch2);
printf("%c\n", ch2);
return 0;
}
布尔类型
- 早期C语言没有布尔类型数据,以0代表逻辑假,非0代表逻辑真
- C99标准定义了新的关键字_Bool,提供了布尔类型,或者也可以使用stdbool.h中的bool
示例代码:
#include <stdio.h>
#include <stdbool.h>
int main() {
// 定义一个bool类型变量,同时赋值为true,然后打印变量的值
bool flag = true;
printf("%d\n", flag);
// 修改上一步变量的值为true,然后打印变量的值
flag = false;
printf("%d\n", flag);
return 0;
}
数据类型长度(大小)
- 大小单位说明
术语 | 含义 |
---|---|
bit | 一个二进制代表一位,只能表示0或1,数据传输单位 |
Byte | 8个二进制位,数据存储单位 |
WORD | 2个字节,16位 |
DWORD | 两个WORD,4个字节,32位 |
1b | 1bit,1位 |
1B | 1Byte, 1字节, 8位 |
1k, 1K | 1024 |
1M | 1024k, 1024×1024 |
1G | 1024M |
1T | 1024G |
1Kb | 1024bit, 1024位 |
1KB | 1024Byte,1024字节 |
1Mb | 1024Kb = 1024 × 1024bit |
1MB | 1024KB = 1024 × 1024Byte |
- 使用sizeof查看数据长度
- 长度在不同平台是不一样
- 长度在不同平台是不一样
#include <stdio.h>
int main() {
// 通过sizeof打印各种类型的长度(大小)
printf("char length = %d\n", sizeof(char));
printf("short length = %d\n", sizeof(short));
printf("int length = %d\n", sizeof(int));
printf("long length = %d\n", sizeof(long));
printf("float length = %d\n", sizeof(float));
printf("double length = %d\n", sizeof(double));
printf("long double length = %d\n", sizeof(long double));
// 定义int类型变量,sizeof打印变量的大小
int a;
printf("a length = %d\n", sizeof(a));
return 0;
}
可移植的类型
- C语言程序在移植过程中可能会出现不同平台数据类型不兼容
- 为了解决这个问题,C语言在可移植类型 stdint.h 和 inttype.h 中规定了精确宽度整数类型,以确保C语言的类型在各系统内功能相同
示例代码:
#include <stdio.h>
#include <inttypes.h>
int main() {
// 8位整型
int8_t a=127;
printf("%d\n", sizeof(a));
// 16位整型
int16_t b = 127;
printf("%d\n", sizeof(b));
// unsigned 无符号,没有符号位,数值为正数
uint8_t c = 255;
uint16_t d = 200;
return 0;
}
常量
与变量不同,常量的值在程序运行时不会改变,常量可以用于多种情况,例如:
- 为程序中使用的常见数值赋值,如圆周率、自然对数等
- 为程序中使用的特定值赋值,如文件路径、IP地址等
- 为程序中使用的枚举值赋值,如表示一组事物状态的标识符
类型 | 常量 |
---|---|
整型常量 | 100, 200, -100, 0 |
实型常量 | 3.14, 0.125, -3.123 |
字符型常量 | ‘a’, ‘b’, ‘1’ |
字符串常量 | “a”, “ab”, “12356” |
自定义的常量
常量的定义方式有两种:
// 预处理常量
#define PI 3.14
// const常量
const double pi2 = 3.14;
示例代码:
#include <stdio.h>
// 预处理常量
#define PI 3.14
int main() {
// const常量
const double pi2 = 3.14;
// 常量不能修改,以下代码是错误的
PI = 3.33;
pi2 = 3.33;
return 0;
}
系统定义的常量
- 这些常量的值在不同平台是不一样的
float.h:
limits.h:
示例代码:
#include <stdio.h>
#include <float.h>
#include <limits.h>
int main() {
printf("%lf\n", FLT_MIN);
printf("%lf\n", FLT_MAX);
printf("%d\n", CHAR_BIT);
printf("%d\n", CHAR_MIN);
printf("%d\n", CHAR_MAX);
printf("%d\n", SHRT_MIN);
printf("%d\n", SHRT_MAX);
printf("%d\n", INT_MIN);
printf("%d\n", INT_MAX);
printf("%ld\n", LONG_MIN);
printf("%ld\n", LONG_MAX);
return 0;
}