c++

前言:
总是忘不了,上初中时立下的梦想,我恨自己的堕落,我恨自己的懦弱。每看一次《根鸟》,我都会哭一次,我就是那个根鸟。我好悔恨。

2016-8-4
1.左值、右值
左值,没有内存实体的左值不存在的。Int a=3;
右值,可以有内存实体,也可以没有内存实体. A+1,&a,100,右值,都在寄存器
CPU处理计算,内存是存储的。
寄存器的内容不可以取内存地址, &(a+1)非法

2.内嵌汇编
在代码中用汇编替代:data = num + 4;

_asm
{
    mov eax,num  //num移动到eax
    add eax,4   //eax 的值自动+4
    mov data,eax //eax的值移动到data
}

3.调试
调试,下断点。断点,可以中断程序执行,观察内部过程。必须具备调试能力。学会查看内存,CPU寄存器,反汇编。

4.变量的赋值
变量的赋值就是拷贝二进制,内存之间不可以直接拷贝,必须通过CPU,变量的值发生变化,就是变量的那一段内存,存放不同的二进制数据

5.Define与Const

#define  K  100.0
const int Knum = 100.0;//赋值号会自动进行数据类型转换
const是伪常量,可以改变它的值,不可以用于数组,define可以
改变伪常量:
const int num = 10;//伪常量
     int *p = (int *)#//C++强类型
     *p = 3;//指针赋值,const不靠谱
      printf("%d", num);
const常量只有在初始化的时候是左值,const常量有内存实体
C++强类型,C弱类型,区别是赋值的时候,C++会严格检测类型

6.printf
printf不会自动进行数据类型转换,打印的变量必须匹配打印方式
printf(“%d,%d”, 10.9, 10);//printf,第一个错误,第二个连带错误

7.指针
指针是一种数据类型,类型决定了大小,决定了二进制数据的解析方式,指针变量存储的是地址,因为类型,同一个地址也有所不同。

int num = 100;
double *p1 = #
int  *p2 = #
float *p3 = #
printf("%f\n", *p1);
printf("%d\n", *p2);
printf("%f\n", *p3);

2016-8-5
8.头文件

#include <limits.h>//处理整数字符
#include <float.h> //处理浮点数

9.极限的意义
//所有的数据操作,赋值,计算,极限范围之内不会错误
//极限范围之外,偶尔正确,一定出错

10.补码、阶码
补码存储负数,阶码存储实数
变量存储,低位在低字节,高位在高字节

发布了47 篇原创文章 · 获赞 34 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章