前言:
總是忘不了,上初中時立下的夢想,我恨自己的墮落,我恨自己的懦弱。每看一次《根鳥》,我都會哭一次,我就是那個根鳥。我好悔恨。
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.補碼、階碼
補碼存儲負數,階碼存儲實數
變量存儲,低位在低字節,高位在高字節