1. cpu 内存条 硬盘 显卡 主板 显示器 之间的关系
双击电影文件,OS先将文件调入到内存条中,CPU去处理内存条中的数据,将一些数据显示成图像,通过显卡,在显示器上输出;一些数据显示成声音,送给声卡输出
主板:CPU,内存条等 都放在主板上,起到中间传输的作用
2. HelloWorld是如何运行起来的
编译、连接:产生.exe文件,点击VS的!运行:会调用OS,OS去执行.exe文件。OS控制硬件,Windows98 和WinMe可以直接控制硬件,但从Windows2000开始不可以了,屏蔽掉了,不允许你编写软件直接调用硬件。
3. 什么是类型
中文 | 类型 | 字节 |
---|---|---|
短整形 | short | 2 |
整形 | int | 4 |
长整形 | long | 8 |
单精度浮点 | float | 4 |
双精度浮点 | double | 8 |
字符 | char | 1 |
字符串 | 无 | char[]替代 |
结构体 | struct | {}复合类型 |
枚举 | 复合类型 |
共用体
3.3 : float即可,4字节,省内存
3.333333333333:double:8字节。
#include <stdio.h>
int main() {
int i = 10.5; //java报错,C包容
print("int i = %d", i); //结果:int i = 10
return 0;
}
4. 什么是变量
变量的本质就是内存里的一段存储空间。不通过变量的话你得自己写内容和内存地址的映射关系。 变量5. cpu 内存条 VC++6.0 操作系统 之间的关系
6. 变量为什么必须初始化
初始化就是赋值。未经初始化的变量VC++会为其赋值一个-8......6的数字。覆盖原来的脏数据,以此来提醒你这是未赋值的变量。
#include <stdio.h>
int main() {
int i; //未初始化,然后使用
//结果:-8......6一个固定不变的数字:VC++设置的
//提醒你这是垃圾数字,变量未定义
print("int i = %d", i);
return 0;
}
01010101
1:高电频
0:低电频
硬件上要么是0,要么是1,不可能什么都没有。
一重启电脑,都变成00000000了。
i空间是空闲的,但是以前可能被使用过,然后释放了。所谓释放不是清零,而是状态变成释放,可以被其他程序使用。
填充数字:VC++一旦发现一个内存是一个垃圾值,自己的程序又没有初始化,便会填充一个固定的大数字。
7. 如何定义变量
int i = 5; 等价于 int i; i = 5;
int i , j; 等价于 int i; int ;
int i, j = 3; 等价于 int i; int j; j = 3;
int i =3 , j = 5; 等价于 int i; int j; i = 3; j = 5;
int i, j; i = j = 5; 等价于 int i, j; i = 5; j = 5;
8. 什么是进制
进制就是逢几进一,N进制就是逢进一。eg:
十进制:10个基数,逢十进一,基数:0 1 2 3 4 5 6 7 8 9
二进制:2个基数,逢二进一,基数:0 1
八进制:8个基数,逢八进一,基数:0 1 2 3 4 5 6 7
8 ——> 10, 9 ——> 11,10 ——>12
十六进制:16个基数,逢十六进一,
基数:0 1 2 3 4 5 6 7 8 9 A B C D E F
或者:0 1 2 3 4 5 6 7 8 9 a b c d e f
生活中进制的例子
- 一周七天
- 一年12个月
- 一分钟60秒
人都有10个手指头,算起来容易;有地方有20进制,因为不穿鞋。
原先的大型计算机也是10进制,冯诺依曼给定的二进制。并将计算机分为5大部件。因为计算机容易识别二进制。
-
计算机只认识二进制
-
人类为了实际需要,我们又建立了八进制和十六进制
-
C语言规定:
八进制前面要加数字:0
十六进制前面加0X 或0x
十进制前什么也不加 -
汇编语言
100101B : 二进制100101,(100101)2
1357O:八进制1357,(1357)8
2049D:十进制2049,(2049)10
3FB9H:十六进制3FB9,(3FB9)16
/**
printf("int i = %d", i);
%d:表示:十进制输出
%x 或 %X 表示:十六进制输出
%o 表示:八进制输出
*/
#include <stdio.h>
int main() {
int i = 88;
printf("int i = %d \n", i); //88
printf("int i = %X \n", i); //58 = 5 x 16 + 8
i = 0x32C;
printf("int i = %x \n", i); //32
printf("int i = %d \n", i); //3 * 16 * 16 + 2 * 16 + 12 = 812
return 0;
}
9. 常量在C语言中如何表示
整数:
十进制:正常写
八进制:
十六进制:
浮点数:
传统写法:
float e = 12.345;
科学计数法:
floagt e = 1.2e3; //1200
float e = 123.45e-2F; //x = 1.2345f ,不加f默认是double
字符:
单个字符用单引号
'A'
字符串用双引号
"abcdefg";
"A" 是 'A' 和 '\0'的组合
10. 常量是以什么样的二进制代码存储在计算机中
类型 | 形式 |
---|---|
整数 | 补码 |
实数 | IEEE754标准 |
字符 | 补码,ASCII 转换成整数 |
11. 代码规范
《高质量C / C++编程》林锐
12. 什么是字节
字节就是存储数据的单位,并且是硬件所能访问的最小单位。硬件不能精确到位,只能精确到字节。1字节 = 8 位。只能通过位运算符控制到位。整形4字节,等于4 * 8 位 = 32位。
1字节 = 8位
1K = 1024字节
1M = 1024K
1G = 1024M
1T = 1024G
1P = 1024T
13. 不同类型数据之间互相赋值的问题
int i = 23;
long j = 123456;
i = j;
printf("%ld %d \n",i,j);
float f 123.456;
float d = 543.213;
printf("%f %lf", f,d);
#将long型赋值给int型
int i = 2147483648;
printf("%d",i); // - 2147483648;补码导致
#java直接报错,这个问题是c 和C++独有的问题
14. 什么是ASCII
ASCII不是一个值,而是一种规定,规定了不同的字符使用哪个整数值去表示。
A 65
B 66
a 97
b 98
char ch = 'A';
char ch = "AB"; //error, 字符串不能付给字符
char ch = "A"; //error, "A" = "A\0"
char ch = 'B'; //定义过了的就不能再定义了。
ch = 'C';
printf("%c ",ch);
char A = 'A';
#字符是以二进制存储,任何二进制都可以转换成整数
printf("%d",A); //65
char a = 'a';
#字符是以二进制存储,任何二进制都可以转换成整数
printf("%d",a); //97
15. 基本的输入输出方法
printf()
scanf()
网友评论