目录
一、变量和常量
1.1 关键字
1.2 数据类型
1.3 变量名命名
二、进制
三、整型
3.1 整型的输出
3.2 整型的输入
3.3 整型的分类
四、字符
4.1 字符的输出
4.2 字符的输入
4.3 ascill码表
4.4 转义字符
五、浮点型
六、类型限定符
七、格式化
7.1 格式化输出
7.2 格式化输入
一、变量和常量
1.1 关键字
- 数据类型关键字(12个)
char,short,int,long,float,double,unsigned,signed,struct,union,enum,void
- 控制语句关键字(12个)
if,else,switch,case,default,for,do,while,break,continue,goto,return
- 储存类关键字(5个)
auto,extern,register,static,const
- 其他关键字(3个)
sizeof,typedef,volatile
1.2 数据类型
整数作用:编译器预算对象(变量)分配的内存空间大小。
1.3 变量名命名
- 不能和关键字同名。
- 以字母、数字、下划线组成。
- 不能以数字开头。
- 区分大小写。
二、进制
十进制 | 二进制 | 八进制 | 十六进制 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
三、整型
3.1 整型的输出
#include<stdio.h>
int main()
{
int a=123;
printf("%d\n", a);//十进制
printf("%o\n", a);//八进制
printf("%x\n", a);//十六进制
printf("%X\n", a);//十六进制
printf("%u\n", a);//无符号
return 0;
}
3.2 整型的输入
#include<stdio.h>
int main()
{
int a;
printf("请输入变量a的值:\n");
scanf_s("%d", &a);
printf("输入的a=%d\n", a);
return 0;
}
3.3 整型的分类
数据类型 | 占用空间 |
short(短整型) | 2字节 |
int(整型) | 4字节 |
long(长整型) | windows 为4字节,linux为4字节(32位),8字节(64位) |
long long(长长整型) | 8字节 |
#include<stdio.h>
int main()
{
short a = 0xffff;
int b = 0xffffffff;
long c = 0xffffffffl;
long long d = 0xffffffffffffffffll;
printf("a=%hx\n",a);
printf("a=%x\n", a);
printf("a=%lx\n", a);
printf("a=%llx\n", a);
return 0;
}
四、字符
4.1 字符的输出
#include<stdio.h>
int main()
{
char ch = 'a';
printf("sizef(ch)=%u\n",sizeof(ch));//占用一字节
printf("ch[%%c]=%c\n", ch);//打印字符
printf("ch[%%d]=%d\n", ch); //打印'a'ASCLL的值
return 0;
}
4.2 字符的输入
#include<stdio.h>
int main()
{
char ch;
printf("请输入字符:\n");
scanf_s("%c", &ch);
printf("输入字符:%c\n", ch);
return 0;
}
4.3 ascill码表
ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 | ASCII值 | 控制字符 |
0 | NUL | 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 |
4.4 转义字符
转义字符 | 含义 | ASCLL码值(十进制) |
\a | 报警 | 007 |
\b | 退格(BS),将当前位置移到前一列 | 008 |
\f | 换页(LF),将当前位置移到下页开头 | 012 |
\n | 换行(LF),将当前位置移到下一行开头 | 010 |
\r | 回车(CR),将当前位置移到本行开头 | 013 |
\t | 水平制表(HT)(跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符"\" | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\? | 代表一个问号 | 063 |
\0 | 数字0 | 000 |
\ddd | 8进制转义字符,d范围0~7 | 3位8进制 |
\xhh | 16进制转义字符,h范围0~9,a~f,A~F | 3位16进制 |
五、浮点型
实型(浮点型):float、double
#include<stdio.h>
int main()
{
float a=3.14f;
double b = 3.14;
printf("sizeof(a)=%u\n",sizeof(a));
printf("sizeof(b)=%u\n", sizeof(b));
printf("sizeof(3.14f)=%u\n", sizeof(3.14f));
printf("sizeof(3.14)=%u\n", sizeof(3.14));
return 0;
}
六、类型限定符
限定符 | 含义 |
extern | 声明一个变量,extern声明的变量没有建立存储空间。 extern int a;//变量在定义的时候创建存储空间。 |
const | 定义一个常量,常量的值不能修改。 const int a=10; |
Volatile | 防止编译器优化代码 |
register | 定义寄存器变量,提高效率。register是建议型的指令,而不是命令型的指令,如果CPU有空闲寄存器,那么register就生效,如果没有空闲寄存器,那么register无效。 |
七、格式化
7.1 格式化输出
打印格式 | 对应数据类型 | 含义 |
%d | int | 接受整形数值并将它表示为有符号的十进制数 |
%hd | short int | 短整数 |
%hu | unsigned short | 无符号短整数 |
%o | unsigned int | 无符号8进制整数 |
%u | unsigned int | 无符号10进制整数 |
%x,%X | unsigned int | 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF |
%f | float | 单精度浮点数 |
%lf | double | 双精度浮点数 |
%e,%E | double | 科学字数法表示的数,此处“e”的大小写代表在输出时用“e” |
%c | char | 字符型。可以把输入的数字按照ASCLL码相应转换为对应的字符 |
%s | char* | 字符串。输出字符串中的字符直至字符串中的空字符 |
%p | void* | 以16进制形式输出指针 |
%% | % | 输出一个百分号 |
printf附加格式:
字符 | 含义 |
l(字母l) | 附加在d,u,x,o 前面,表示长度整数 |
- | 左对齐 |
m | 数据最小宽度 |
0 | 将输出的前面补上0直到占满指定列宽为止不可以搭配使用- |
m,n | m指域宽,n指精度 |
字符和字符串
- 'a':字符
- "a":字符串(两个字符a\0)
输出
- printf 格式化输出
- putchar(字符)输出一个字符
7.2 格式化输入
- scanf 指定格式输入
#include<stdio.h>
int main()
{
char ch;
scanf_s("%c", &ch);
int a;
scanf_s("%d", &a);
int b, c;
scanf_s("%d,%d", &b, &c);
return 0;
}
- getchar 接受一个字符
#include<stdio.h>
int main()
{
char ch;
ch = getchar();
getchar();
return 0;
}