C/C++實踐筆記 004
轉義字符
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void main1()
{
char ch = getchar(); //獲取一個字符
putchar(ch); //輸出一個字符
system("pause");
}
C判斷是0和非0,
java、php等只有0和1
\a響鈴
0 48
A 65
a 97
進制要弄得非常清楚
內存如何存放數據和指令
同一個時間,內存空間里只能保存一份值
變量的內存機制
變量表管理所有的變量,不能引用未聲明的變量
只能給變量賦值,變量在內存
a+1屬于寄存器,不能賦值
_asm
{
}
插入匯編
變量的賦值都是通過cpu的寄存器完成
a=10 ,10存放在代碼區(只讀)的常量符號表
標識符:程序中用于表示常量、變量、函數的字符序列,只能由字母、數字、下劃線組成
C語言大小寫不同
遵循軟件工程規范,一看就懂
VC函數名變量名支持中文,gcc只有字符串可以中文
C語言老版本的編譯器,GCC如果沒有開啟C++11支持,vc2010之前的版本,變量必須在函數調用之前定義。
初始化,新老版本編譯器,新編譯器提示錯誤,老版本不提示垃圾數據
常量分析
const int a=100;
不能直接修改常量的數據
&取地址運算符
間接賦值修改常量
* (int*) (&a)=16; //不算真正意義的常量
// *根據地址取出內容, int*類型轉化為非常量類型
#define a 99
//define不能加分號,加了就是一起替換
c語言能操作內存,不能操作寄存器
define算是真正意義的常量,不能直接修改,也不能間接修改
匯編語言既能操作內存,也可以操作寄存器
define意義明確,可以實現批量修改,不能取地址,因為它是存在寄存器里的
變量交換 時空分析
時空復雜度
int temp=a;
a=b;
b=temp;
評估時空復雜度,temp增加空間1,時間3次
int a=10;
int b=5;
a=a+b; //a=15,b=5
b=a-b; //b=10,a=15
a=a-b; //a=5,b=10
空間0,賦值三次,加三次,共6次
+,-,*,/會數據越界,最安全的做法是異或
異或
變量的數據類型
進制
0代表八進制
0x代表十六進制
printf("%d",num);
以十進制輸出結果
查看內存時一般是十六進制
計算機存儲數據
內存是存儲數據的房間
1個字代表4個字節
數據的類型
面試中常見,理解不透徹會出現問題
%f實數打印
數據類型的差別
printf不會自動完成數據類型轉換
float f1=10.9;
printf("%d",f1);
直接按照整數去讀實數會出錯
理解語法規則,邏輯嚴密
數據類型的差別:不同數據類型占據的空間不同,解析方式不同
sizeof
char 1字節
int 4字節
double 8字節
sizeof是關鍵字,不是函數
sizeof還可以求表達式
sizeof("123")占4個字節,因為字符串默認會有一個\0結束
sizeof('A') 占1個字節
符號的作用
有符號和無符號
整數的極限
#include<limits.h> //極限的頭文件
void main()
{
int num_max=INT_MAX;
int num_min=INT_MIN;
printf("max=%d,min=%d",num_max,num_min);
getchar();
}
unsigned char chnum=0; 2^8=256 0~255
數據的計算必須在極限的范圍內
第一位0代表正數,1代表負數
數據在內存的排列
電腦手機 低位在低字節,高位在高字節
unix 低位在高字節
%u無符號
補碼
反碼正數與原碼一樣
補碼正數與原碼一樣
負數反碼+1
計算機是以補碼的方式存儲的

浙公網安備 33010602011771號