初识C语言:
第一个C语言程序:
#include <stdio.h> int main () { printf("Hello\n"); return 0; }C语言程序只能有一个main函数(主函数)
return 0;结尾
库函数头文件查询网站:
1.Reference - C++ Referencehttps://legacy.cplusplus.com/reference/
2.cplusplus.com/reference/cstdio/#google_vignettehttps://cplusplus.com/reference/cstdio/
C语言把.c为后缀的文件称为源文件,.h为后缀的文件称为头文件。
注释:
// 注释
/* */ 注释
ASCLL编码(常用的128个):
(前32个不可打印)
C语言数据类型:
整型类型:
字符型 char
短整型 short
整形 int
长整型 long / long int
长长整型 long long / long long int
整型类型前可加:
(不写默认signed有符号)
signed //有符号类型
unsigned //无符号类型
浮点类型:
单精度浮点型float(小数点后6位)
双精度浮点型double(小数点后15位)
布尔类型:
(用于表示真假)
#include <stdio.h> //布尔类型 int main() { _Bool flg = 0;//C语言中0为假;其它为真。 //_Bool flg = true;//使用true/false需要引入头文件#include <stdbool.h> if (flg) { printf("真"); } else { printf("假"); } return 0; }进制的表示:
八进制以0开头:
十六进制以0x开头:
#include <stdio.h> int main() { int a1 = 0100;//编译器解析的时候看到开头是0 就知道这是一个八进制 int a2 = 0x40;//编译器解析的时候看到开头是0x 就知道这是一个十六进制 //整型十进制的方式输出 printf("%d\n",a1); printf("%d\n",a2); return 0; }原码 反码 补码
对于有符号(signed)类型 0为正 1为负
计算机只能识别二进制;
计算机在存数据时存的是补码
原码:二进制
反码:原码 符号位不变(signed类型),其它位取反
补码:反码+1
内存:
char 1个字节 1个字节=》8个bit
int 4个字节 bit只能存放二进制 0 / 1
short 2个字节
求类型的字节大小:
sizeof
#include <stdio.h> int main() { //%zu size_t (sizeof专用) printf("%zu\n", sizeof(char)); return 0; }求char类型的范围:
对于signed有符号类型:
(char类型1个字节)(-2^7~2^7 -1)
| 符号位 |
0000 0000=》 0
0111 1111 =》 127
1000 0000=》-128
1111 1111 =》 -1
(电脑存的是补码)
对于char 类型 127+1= -128
//char 127+1=-128 #include <stdio.h> int main() { char a = 127; //无标注系统默认signed有符号类型 char b = a + 1; printf("%d", b);//输出-128 return 0; }对于unsigned无符号类型:
(char 0~2^8 -1)
局部变量/全局变量:
#include <stdio.h> int a = 20;//全局变量 int main() { int a = 10;//局部变量 printf("%d", a);//输出a=10 return 0;强制转换:
(强制转换可能会丢失数据)
float f=1;
int a= (int)f; //强制转换
常用占位符:
%c :字符//char
%s :字符串
%d :整数 //int
%f :单精度浮点型float
%lf :双精度浮点型double
%o :八进制整数
%p :指针
%u :无符号整数
%x :十六进制整数
%zu :size_t 类型整数
%% :输出一个%
%5d :最少5位,不够5位补空格(左补空格,右对齐)
%-5d :(右补空格,左对齐)
%6.2f : 宽度为6(小数点也算,例如 :123.45),保留小数点后两位
VS2022使用 scanf 函数需要在头文件加入下列代码:
#define _CRT_SECURE_NO_WARNINGS