美文网首页工作生活C语言
C语言 第2节 基本编程知识

C语言 第2节 基本编程知识

作者: 小超_8b2f | 来源:发表于2019-07-04 16:15 被阅读0次
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大部件。因为计算机容易识别二进制。

image.png
  • 计算机只认识二进制

  • 人类为了实际需要,我们又建立了八进制和十六进制

  • 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()

相关文章

网友评论

    本文标题:C语言 第2节 基本编程知识

    本文链接:https://www.haomeiwen.com/subject/rxnbcctx.html