函式的傳引數問題
檔案操作
資料規模估算
實數(浮點數)
浮點數比較(重要)
可以用來表示有理數,簡化0的部分書寫
e前面的數字代表基礎部分(可帶小數) e代表乘以 e後的數字代表10的次方
double a = 1.5e3; // a= 1500相當於編譯的時候直接替換同名的常量名(寫在開頭)double b = 2e-2; //b = 0.02
double c = -1.7e2; //c = -170
double c = 1.7e2; //c = 170
#define pi 3.14159265359推薦寫法…cout…cout《直接修改傳入的函式「永久性」
void swap(double &a,double &b)
…double a=5;
double b=2;
swap(a,b);
cout<<「a=」《直接修改傳入函式的副本,原函式不變
void swap(double a,double b)
…double a=5;
double b=2;
swap(a,b);
cout<<「a=」《重定向版freopen
很多人會說cin的速度比scanf慢很多, 其實不然.
cin慢的原因主要在於預設cin與stdin總是保持同步, 這一步是消耗時間大戶.
只需要加上std::ios::sync_with_stdio(false)來關閉同步就好了, 速度甚至要優於scanf
引用 這句語句是用來取消cin的同步,什麼叫同步呢?就是iostream的緩衝跟stdio的同步。如果你已經在標頭檔案上用了using namespace std;那麼就可以去掉前面的std::了。取消後就cin就不能和scanf,sscanf, getchar, fgets之類同時用了,否則就可能會導致輸出和預期的不一樣。
ibyte(位元組)=8bit(一般以byte為準,1bit相當於乙個開關1/0)int main()
基礎位元組數是2位(16bit)大約是-(215)~215-1 (乙個符號位被占用)
如果符號位沒有被占用即只表示正數 大約是0~216-1
long代表位元組數目翻倍
unsigned代表只表示正數,位元組數目也翻倍
全部寫法
大體範圍
short
short (int)
±3e4 (2byte)
unsigned
unsigned (short int)/unsigned short (int)
+6e4 (2byte)
long
long / int / long int
±2e9 (4byte)
unsigned long
unsigned long (int)
+4e9 (4byte)
以下型別在noip比賽中禁止使用
推薦寫法
全部寫法
大體範圍
long long
long long (int)
±9e18 (8byte)
unsigned long long
unsigned long long
+1.8e19 (8byte)
基礎位數是4位以下型別在noip比賽中禁止使用全部表示正負數無unsigned
階梯式翻倍位元組數目由於涉及特殊儲存格式,有效位元組數比較少
| 寫法 | 大體範圍 |
|–|--|–|
| float | ±3e-38 (4byte) |
| double | ±3e-308 (8byte) |
寫法大體範圍
long double
±3e-4932 (16byte)
由於浮點數的儲存格式問題(你看它**的儲存範圍就知道)其實是無法完全表示的(二進位制底層儲存格式決定)只能是取乙個大致的範圍存在誤差
所以浮點數的比較不能簡單的==來運算
如果fabs(a-b)<=1e-6,那麼就是相等了。 fabs是求浮點數絕對值的函式。
類似的 判斷大於的時候,就是if(a>b && fabs(a-b)>1e-6)。
判斷小於的時候,就是if(a1e-6)。
C語言易忘知識 隨時更新
cr lf,即 r n cr是0x0d,lf是0x0a。十六進製制數 0x 和 x 有什麼區別?區別不大,都是把數按16進製制輸出。0x 當輸出的數轉換為16進製制只有1位時,在前面補0,如 0a,其它情況按照實際情況輸出。x 按照輸出數轉換為16進製制的實際位數輸出。此外,小寫x和大寫x也有點區別...
C易忘知識點
巨集定義中 類似於拼接,如 12 34 1234,並且如果34是乙個巨集,也會阻止其展開並拼接 將後邊的內容轉換成字串巨集定義可以巢狀 巨集定義中可以使用三目運算子,因為被認為是表示式,最終返回的是乙個結果。其實最重要就是記住巨集的用法是直接展開,然後看符不符合語法。int 左移 不溢位時符號位不變...
c基本易忘知識點
const 作用是把乙個變數視為常量,這個變數不能被改變,可以用const int a b a不能被改變,a可以改變,a c這樣是可以的,a 20這樣是不行的 int const a b 這樣的話a不能改變,而 a可以改變 register關鍵字暗示編譯器前面帶有這個關鍵字的變數將被頻繁的利用 re...