c语言简单了解

关于计算机专有名词介绍

IDE
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器,编译器、调试器和图形用户界面等工具。

编译器
cl.exe文件是Visual CC++的编译器,它将程序源代码文件编译为obj文件。
编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。
工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执程序 (executables)
xx.c -> xx.i -> xx.s -> xx.obj -> xx.exe

链接器
link.exe是Windows平台的链接器,它将cl.exe编译生成的obj文件,资源编译器生成的.res文件,以及lib目录下的lib文件等 链接 成可执行的exe文件、dll文件等

c语言编译与基本简介
/c 只编译不连接 cl 将人类能识别的语言转化为机器语言
#include 包含头文件 stdio.h 头文件库 包含使用的函数声明
自己做的头文件用“” 官方或者标准用<>
printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息。
system函数调用dos命令

  顺序访问的数据是连续的。硬盘的磁头是按一定的顺序访问磁片,磁头不做频繁的寻道,这样带来的结果是速度很快
  随机访问(访问任何东西的代价相同) 

  内存指标:稳定,可靠 ,大小,速率
  内存用来协调机械储存数据和内部处理数据
  删除就是将文件文件由占用状态变为可分配的状态。

内存四大块
代码 code(re) 数据 data(分rw和w) 栈 stack 堆 heap
四大内存权限
W 写 r 读 e 执行 s 共享(shell)

Main() 程序员入口
关闭随机地址看00400000h的值是不是4d 5a 90 00
00400000h+3c得值a1
00400000+a1看得值是不是4550
如果是的00400000h+a1+28h得一值a2
00400000h+a2的地址就是函数入口

** main函数执行之前,主要就是初始化系统相关资源:**
1.设置栈指针
2.初始化static静态和global全局变量,即data段的内容
3.将未初始化部分的赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容
4.运行全局构造器,估计是C++中构造函数之类的吧
5.将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数

  第一代计算机cpu处理内存 为 256字节   第二代计算机cpu处理内存为64k     第三代计算机cpu处理内存为64g
  处理内存越大,性能越强,功耗也就越大
  计算机中负号表示  一般最高为用0和1表示为数字的正负
  比如char 八位    0000 0001  (+1)  1000 0001  (-1)
  如果1 0000 0000  则一将溢出   显示结果为 1 .所以 1111 1111 +0000 0001 = 0000 0000 
  因为1000 0000的最高为表示为负数,所以一般将 1000 0000表示为-128

数据大小
char c 一字节 8位 可存 0~255
short i 2个字节 16位 可存 0~65535
int i long j 4个字节 32位 可存 0~4294967295
long long 8字节 64位 可存 0~2^64-1

补码 :
所谓的补码就是为了让计算机语言在运算上能展现数学逻辑出现的代码,用补码来表示原来所对应的值的相反数
比如1的二进制八位为0000 0001 他的反码就是1111 1110 补码就是1111 1111 也就是这个数表示为-1
补码利用的原理就和溢出和循环一样 ,当达到最大值的时候就会变成10000 0000 最高位的一就会溢出
可以把0000 0000到1111 1111看作一个循环满了就到下一个循
补码推导公式:
A - b =
A + (100h - b) - 100h =
b + ~b = ffh
~b + 1 = 100h - b
A + ~b +1 -100 =a - b
~b + 1 =neg(b) 补码b
A + neg (b) -100 = a - b -100溢出,凡是负数都是做溢出运算
求补:总数值减去当前数值

浮点数:
早期没有浮点数,后期出现协助浮点数cpu。
IEEE规定和规范了浮点数的格式
浮点数一般用32位或者64位表示
32位single 单精度 或者float 64位double 双精度

floa单浮点数
0(表示正符号)8位(指数位)23位(数值)
最高位表示正负数 0表示正数 1表示负数
移动小数位+127=指数位的表达值 移动小数位正负表左右移
后面的二十三位表示数值 前面要加一
数值正数为除二 负数成二
比如12.875换成二进制位
01000 0001 10011 1000 0000 0000 0000 000

double双精度浮点数
0(表示正负号)11位(指数位)52位(数值)
double和float的结构不同但是原理相通
最高位表示正负数 0表示正数 1表示负数
移动小数位+1023=指数位的表达值 移动小数位正负表左右移
后面的五十二位表示数值 前面要加一
数值正数为除二 负数成二
比如64.25换成二进制
0 1000 0010 1000 0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000

**vs系列调试 **
F7 编译代码 ctr F7 仅编译 F10单步 shift+F11跳出函数
F9下端点 F5运行 F11到函数下一步,函数查看 光标到函数按下F1帮助 查找相关文献

取整方式
向下取整 大于这个数的最小整数
向下取整 不大于这个数的最大整数
C语言除数标准 :向零取整 不大于这个数绝对值的最大整数
移位正数的结果正确,负数整除结果正确,不能整除的结果不正确,误差不大于二

学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13595266.html