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上,却失败了,这就是一个倒退),这个过程就是回归测试。
有抽样和代码注入两种分析方法
抽样:具备不须要改动程序,运行较快,很快找到瓶颈,可是不能获得精确的数据,也不能准确表示代码中的调用关系树等特色。
代码注入:具备能够精确测量程序中各个数据,可是运行时间大大加长,还会产生很大的数据文件,增长了数据分析的时间。
通常的作法是先用抽样的方法找到效能瓶颈所在,而后对待定的模块用代码注入的方法进行详细分析。
因为基础较差加上此书过厚,快速阅读感受什么也看不懂,打算每周一章章的去学习。