return 0 表明程序正常退出,return 1表明程序異常退出!
使用return 語句能夠返回一個變量內的值或一個指針,也可用return0,表示返回爲空。
return 表明調到函數外,
return 0表明函數正常終止
return 1表明函數非正常終止
return 關鍵字的做用是返回程序流程的控制權!
其反作用是返回一個值。
例如int main(){}則必須返回一個值
return 0表明函數正常終止
ruturn 1表明函數非正常終止
被調函數 return 1只是給主調函數一個標誌,說明他的執行過程遇到異常狀況。
而後就返回主調函數來處理,繼續執行。
這個異常狀況是什麼那?
這個異常狀況是返回給控制檯的,不在你編的程序的控制範圍內,是給操做系統識別的,對你的程序無影響web
#include <stdio.h> int main() { printf("Factorial of %d is %f\n", 7, 1*2*3*4*5*6*7); return 0; }
整形常量是指形式爲整常數的常量,以上1234567是整形常量的運算,結果也是整形常量,因此不能以%f格式輸出,若是改成1.0234567就能夠,由於此時有一個1.0是浮點型常量(包含小數點的實數),全部常量均會被轉換成double型的來運算。因此能夠用%f輸出。數據庫
#include <math.h>
什麼纔是標準庫裏的數學函數?何時須要調用這個頭文件?數學函數庫,一些數學計算的公式的具體實現是放在math.h裏,具體有:數組
double sin(double);正弦
double cos(double);餘弦
double tan(double);正切函數
double asin (double); 結果介於[-PI/2,PI/2]
double acos (double); 結果介於[0,PI]
double atan (double); 反正切(主值),結果介於[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結果介於[-PI,PI]工具
double sinh (double);
double cosh (double);
double tanh (double);單元測試
double frexp(double value,int exp);這是一個將value值拆分紅小數部分f和(以2爲底的)指數部分exp,並返回小數部分f,即f2^exp。其中f取值在0.5~1.0範圍或者0。
double ldexp(double x,int exp);這個函數恰好跟上面那個frexp函數功能相反,它的返回值是x2^exp
double modf(double value,double iptr);拆分value值,返回它的小數部分,iptr指向整數部分。
double log (double); 以e爲底的對數
double log10 (double);以10爲底的對數
double pow(double x,double y);計算x的y次冪
float powf(float x,float y); 功能與pow一致,只是輸入與輸出皆爲單精度浮點數
double exp (double);求取天然數e的冪
double sqrt (double);開平方根學習
double ceil (double); 取上整,返回不比x小的最小整數
double floor (double); 取下整,返回不比x大的最大整數,即高斯函數[x]測試
int abs(int i); 求整型的絕對值
double fabs (double);求實型的絕對值
double cabs(struct complex znum);求複數的絕對值網站
double frexp (double f,int p); 標準化浮點數,f = x 2^p,已知f求x,p (x介於[0.5,1])
double ldexp (double x,int p); 與frexp相反,已知x,p求f搜索引擎
double modf (double,double*); 將參數的整數部分經過指針回傳,返回小數部分
double fmod (double,double); 返回兩參數相除的餘數
double hypot(double x,double y);已知直角三角形兩個直角邊長度,求斜邊長度
double ldexp(double x,int exponent);計算x(2的exponent次冪)
double poly(double x,int degree,double coeffs []);計算多項式
int matherr(struct exception e);數學錯誤計算處理程序
source: 《C & C++ Code Capsules》
#include <stdio.h> int main() { printf("... ...", ...); /* 計算表達式寫在這裏 */ return 0; }
#include <stdio.h> #include <math.h> int main() { printf("... ...", ...); /* 計算表達式寫在這裏 */ return 0; }
main後面的括號是參數表的意思,空括號則表示main沒有參數。實際上main是程序的入口點,全部執行代碼的起點。
1)區別是main()函數是否有返回值。
2)void定義的函數沒有返回值,int定義的函數返回整型值。
3)void,字面意思是「無類型」,經常使用在程序編寫中對定義函數的參數類型、返回值、函數中指針類型進行聲明,有註釋和限制程序的做用。
我以爲空語句就是補全語句的做用,可是感受無關緊要,資料上說空語句有如下幾個用途:
1)純粹消耗CPU時間,起到延時的做用。
2)爲了程序的結構清楚,可讀性好,之後擴充新功能方便。有些公司的編碼規範要求,對於if/else語句等,若是分支不配對的話,須要用空語句進行配對。
例如:
正常的這麼作就行:
if(XXX) { XXXXX }
可是編碼規範要求,必須這麼寫
if(XXX) { XXXXX } else { ; }
3)對於某些大型的軟件項目,特別是一些嵌入式項目,處於自動化測試的須要,要求必須進行語句(例如,if/else語句)的配對。
#include <stdio.h> /* 若是須要用數學函數,這裏還要寫#include <math.h> */ int main () { /* 若干變量定義(以及初始化) */ /* 若干計算和賦值語句 */ /* 若干輸出語句 */ return 0; }
#include … …… /* 函數定義寫在這裏(能夠有一個或幾個) */ int main () { …… /* 主程序體,這裏一般包含對一些函數的調用 */ return 0; }
其根本緣由是計算機所使用二進制01代碼沒法準確表示某些帶小數位的十進制數據。2進制的浮點數表示有一個很大的問題——它並不能夠精確表示全部實數。說得更準確一點,只有能夠寫成2^a+2^b+2^c+...這種形式而且精度不能太多的實數才能夠用浮點數來精確表示。而大多數實數僅僅保存了一個四捨五入後的近似值而已。譬如,0.1在單精度浮點數中實際值爲0.100000001490116119384765625,也就是說0.1疊加10遍的確是和1.0不等的。
putchar(n % 6 == 5 ? '\n' : ' ');
使程序能在輸出 6個元素後換一行。 爲何是餘數爲5換行,而不是餘數爲6?#include <stdio.h> int main () { long fib[30]; int n; fib[0] = 1; fib[1] = 1; for (n = 2; n < 30; ++n) fib[n] = fib[n-1] + fib[n-2]; for (n = 29; n >= 0; --n) { printf("%d", fib[n]); putchar(n % 6 == 5 ? '\n' : ' '); } return 0; }
由於數組是從0開始計數的,而不是從1開始。
1)AND
2)OR
3)- (去除一類的搜索)
4)+(強制搜索)
5)""(精確搜索)
6)~(相關搜索)
1)filetype:ppt、pdf或者xsl等等格式搜索,例如:aptamer filetype:ppt
2)site:指定在特定的網站進行搜索,例如:羅紹峯 site:sciencenet.cn
1)收錄範圍方面google最好,bing的英文也比百度好,百度搜索中文的功能最好,360收錄結果偏少,但質量相對較高。
2)搜索命令方面google較多,而後是百度,而後是bing,最後是360
1)進入WEB OF KNOWLEDGE平臺,裏面包含了WOS數據庫
2)邏輯算符:AND、OR、NOT
3)臨近算符:NEAR/x(表明所銜接的兩個詞之間詞語數量小於N,例如:canine NEAR/10 virus)、SAME(只在地址字段中檢索,同時要求兩個詞在同一個地址字段中,例如:yale SAME hosp)
4)截詞符:*表示截取零到多個字符、$表示截取零到一個、?表示截取一個字符。
5)scopus數據庫和WOS數據庫差很少,推薦使用WOS數據庫
google scholar 獨特命令:author、出版物限制、site、filetype
1)調研某一個領域在endnote裏把全部文章下載下來,瀏覽以後挑重要的文章閱讀摘要或者全文閱讀。
2)RSS瀏覽文章,以爲重要的下載到一個文件夾,讓endnote自動去識別添加文獻
TC基本功能:定位、複製與移動、搜索、快速查看、文件的同步與比較、批量更名、壓縮和解壓等等。
功能:快速繪出一個領域的發展脈絡,快速鎖定某個領域的重要文獻、科學家、機構,洞察某個領域最近進展,找出無指定關鍵詞的重要文獻。
單元測試:能讓本身負責的模塊功能定義儘可能明確,模塊內部的改變不會影響其餘模塊,並且模塊的質量能獲得穩定的、量化的保證。
主要步驟:
1)設置數據(一個假想的正確的E-mail地址)
2)使用被測試類型的功能(用E-mail地址來建立一個User類的實體)
3)比較實際結果和預期的結果(Assert.IsTure(target != null);)
迴歸測試:工程師們在新版本上運行全部已經過的測試用例,以驗證有沒有「退化」狀況發生(例如:在3.1.5版本,模塊A的編號爲125的測試用例經過了,可是在新的版本3.1.6上,卻失敗了,這就是一個倒退),這個過程就是迴歸測試。
有抽樣和代碼注入兩種分析方法
抽樣:具備不須要改動程序,運行較快,很快找到瓶頸,可是不能獲得精確的數據,也不能準確表示代碼中的調用關係樹等特色。
代碼注入:具備能夠精確測量程序中各個數據,可是運行時間大大加長,還會產生很大的數據文件,增長了數據分析的時間。
通常的作法是先用抽樣的方法找到效能瓶頸所在,而後對待定的模塊用代碼注入的方法進行詳細分析。
因爲基礎較差加上此書過厚,快速閱讀感受什麼也看不懂,打算每週一章章的去學習。