[Pastebin分享代码链接](Ubuntu Pastebin)
笔记
视频笔记
- CPU 内存条 硬盘 显卡 主板显示器之间的关系 数据从硬盘中被提取进内存之中通过显卡在显示器上输出,主板提供一个平台,一个电脑可以没有硬盘(用U盘代替),不能没有内存。
- HelloWorld程序是如何运行起来的
int main(void)
{
printf("欢迎来到C世界!\n");
return 0;
}
- 所有软件的运行都是建立在操作系统上的,并靠CPU来运行完成。
- 现在的程序只提供一个结构,不能直接访问硬件,由操作系统来访问硬件
- 基本数据类型
| 中文 | 英文 | 中文 | 英文 |
|---|---|---|---|
| 整形 | int | 结构体 | struct |
| 短整型 | short int | 枚举 | enum |
| 长整型 | long int | 联合 | union |
| 单精度浮点数 | float | 变量 | variable |
| 长精度浮点型 | double | 初始化 | initialization |
| 字符 | char | 十进制 | decimal |
| 二进制 | binary | 十六进制 | hexadecimal |
| 打印 |
int main(void)
{
char i='A';
printf("%c\n",i);
return 0;
}
- 单精度占4个字节,长精度占8个字节,应尽量减少内存的占用
- 复合数据类型
- 本质:基本数据类型拼在一起
- 代码
- 变量在运行完,内存被释放
- 利用变量方便数据的存储
- 程序在多次运行时,每次运行时变量分配的物理内存地址都不同
- 在具体到程序某一次的完整运行过程中时,变量的物理内存地址是固定不变的
- 本质:内存中一段存储空间
- 软件发出请求,操作系统分配空间,变量与内存地址产生一一对应的关系 变量为什必须初始化
- 不初始化,VC中是一个很大的值,以提醒出现了错误
- 软件运行期间,该软件所占内存空间不在分配给其他软件 如何定义变量
数据类型 变量名=要赋的值; 等价于 数据类型 变量名; 变量名=要赋的值;
-
汇编中,数据后面加字母B表示二进制,字母O表示八进制,字母D表示十进制,字母H表示十六进制
-
一个数所对应十进制=所在位*该数进制的位减一的方+个位数 常量在C语言中如何表示
浮点数
- 十进制:传统的写法
- 十六进制:前面加0x 或0X
- 八进制:前面加0
字符
-
单个字符用单引号括起来
-
‘A’表示字符A
-
‘AB’错误“AB”正确
-
字符串用双引号括起来
- 整数是以补码的形式转换成二进制代码存储在计算机里面中的
- 实数是以IEE754标准转化成二进制代码存储在计算机里面
- 字符的本质与整数的存储方式存储在计算机里面中的
-
成对的去敲代码
-
地位相等不需要缩进,属于另一个代码内部代码需要缩进
-
代码功能与下面代码相对独立就需要换行
- 字节就是存储数据的单位,并且是硬件能访问的最小单位
- 1字节=8位
- 1K=1024字节
- 1M=1024K
- 1G=1024M 不同类型之间相互赋值问题
- 不能将字符串赋给单个字符变量
- 不能重复多次定义 什么是ASCLL
- ASCLL不是一个值,而是一种规定规定了不同字符以那个值去表示 printf和scanf简介
- printf()--将变量内容输出到显示器上
- printf(“字符串”);
- printf(“输出控制字符”,输出参数);
- printf(“书橱控制符1,输出控制付2,,,,”);
- printf("输出控制付,非输出控制符",输出参数);
int main(void)
{
int x = 47;
printf("%x\n",x);
printf("%X\n",x);
printf("%#x\n",x);
printf("%#X\n",x);
}
2021年11月21日
目的:测试%x,%X,%#x,%#X的用法
*/
#include <stdio.h>
int main(void)
{
int x = 47;
printf("%x\n",x);
printf("%X\n",x);
printf("%#x\n",x); //推荐使用
printf("%#X\n",x);
}
/*
在vscode上输出结果分别为2f,2F,0x2f,0x2F
*/
- 需要去解读二进制代码
- 01组成的代码即可以表示数据也可以表示指令
- 如果01组成的代码表示数据的话,那么同样的01代码以不同的格式输出就会有不同的输出结果
- scanf()不含有输入控制符的用法 scanf():通过键盘将数据输入到变量中
- scanf("输入控制符”,输入参数);
- 功能:将从键盘输入的字符转换为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中 含有非输入控制符
- scanf("非输入控制符输入控制符",输入参数);
- 将从键盘上输入的控制符转换为输入控制符所规定的格式的数据,然后存入以输入参数的值为地址的变量中 一次给多个变量赋值 如何用scanf编写出高质量程序
- 使用scanf语句之前先用printf提示用户以什么样的程序来输入
- scanf语句中尽量不用费输入控制符,尤其是\n
- 算术运算符
- 关系运算符
- 逻辑运算符
- 赋值运算符
- 优先级别 算术>关系>逻辑>赋值 除法与取余运算符
- 除法的运算结果和运算对象的数据类型有关,两个术都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数只要有浮点型数据,则商也是浮点型数据,不截取小数部分
- 取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与本除数相同 逻辑运算符
- 与运算必须两个数都是真才是真
- 或运算有真即真
- 非真即假,非假即真
- 真用一表示假用零表示
- 左边的表达式为假,右边的表达式肯定不执行 对初学运算符者的一些建议
- 不用记,用多了就记住了
- 对于记不清的可以假括号
书本笔记
第三章
- 若程序输出一闪而过,可通过 添加getchar函数控制
- 交互式程序使得程序更加灵活
- char类型可以表示较小的整数
- 位是最小的存储单位,一字节有8位,字是设计计算机时给定的自然存储单位
- 在一个值后面加上一个小数点,该值就被称为浮点值,所以可以理解为浮点数就相当于数学中的实数
- 声明为变量创建和标记存储空间,并为其指定初始值
- 如果要在八进制和十六进制前显示0和0x前缀,要分别在转换说明中加入#
- 在C语言中用单引号括起来的单个字符被称为字符常量
- 把转义字符赋给字符常量,必须用单引号把转义序列括起来
- 当计算导致数字过大,超过当前类型能表达的范围时,就会发生上溢
- 计算过程中损失原末尾有效位上的数字,这种情况叫下溢
- sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小
第四章
- C的输入输出看省去有些复杂,复杂换来的是程序的高效的方便控制输入和输出
- 双引号不是字符串的一部分。双引号仅告知编译器它 括起来的是字符串
- 字符串总会剩余一个字节留给空字符
- 数组看做一行连续的多个存储单元
- strlen()函数给出字符串中的字符长度
- 大写常量只是为了提供程序的可读性,即使全用小写来表示符号常量,程序也能正常运行
- const关键字用于限定一个变量为只读
- 转换说明把以二进制格式存储在计算机中的值转换成一系列字符以便与显示
- 一个语句可以写成多行,只需在不同的部分加空白
- 如果使用%s转换说明,scanf()会读取出空白以外的所有字符
- scanf()返回成功读取的项数
- 字符串是一系列被视为一个处理单元字符
课后习题
第四题
- a.字符常量,将转义序列退格赋给字符常量
- b.整数常量
- c.浮点数常量
- d.整数常量,代表一个十六进制的整数常量
- e.浮点数常量,是以指数计数法的方式进行的表示
第六题前六个
| 类型 | 转换说明符 |
|---|---|
| 整型 | %d |
| 十六进制整型 | %0x |
| 字符型 | %c |
| 浮点型 | %E |
| 字符型 | %c |
| 浮点型 | %f |
第八题
- d,ld
- f,c 第一题 整数溢出
浮点数溢出
第二题
int main()
{
int a=67;
printf("%c",a);
return 0;
}
- 输出结果为C
第一题
int main()
{
char a[5];
printf("请输入你的名和姓");
scanf("%s",&a);
printf("%s",a);
return 0;
}
第四题
int main()
{
char a[3];
float b;
printf("输入你的身高和姓名");
scanf("%s%f",&a,&b);
printf("%s,you are %f feet tall",a,b);
return 0;
}
第七题
#include<float.h>
int main()
{
float a=1.0/3.0;
double b=1.0/3.0;
printf("%.6f\n",a);
printf("%.6lf\n",b);
printf("%.12f\n",a);
printf("%.12lf\n",b);
printf("%.16f\n",a);
printf("%.16lf\n",b);
printf("%d\n",FLT_DIG);
printf("%d",DBL_DIG);
}