逗号表达式:
若干个表达式以逗号操作符隔开,成为逗号表达式。逗号表达式具有值,其值为最后一个子表达式的值。但逗号表达式的求值过程是从左边第一项开始,逐项进行的。
左值和右值
左值(left value,也称lvalue)和右值(rightvalue,也称rvalue)是相对于赋值表达式而言的。左值是能出现在赋值表达式左边的表达式,左值表达式不但具有空间实体,还具有读写访问权;右值是能出现在赋值表达式右边的表达式,它可以是不占据内存空间的临时值或字面值,也可以是不具有写入权的空间实体。
优秀程序员不得不知道的20个位运算技巧
http://blog.csdn.net/daiyutage/article/details/8578324 浅析为什么char类型的范围是 —128~+127 http://blog.csdn.net/daiyutage/article/details/8575248 warning C4101: 'months' : unreferenced local variable 就是说你定义了一个变量叫 months,但是却没有用到这个变量,于是编译器提出一个警告。 判断一个实数是不是素数的算法: 例如 17是素数,因为它不能被2~16间任意一整数整除。因此判断一个整数m是否为素数,只需用2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。 其实可以简化,m不必被2~m-1之间的每一个整数去除,只需被2~根号m之间的每个数去除就可以了。例如判别17是否为素数,只需使2~4之间的每一个整数去除。为什么可以做如此简化呢?因为如果m能被2~m-1之间任一整数整除,如果这个数大于根号m,那这个数必定对应的还有一个比根号m小的因子(以16为例,2、8是它的因子,8大于4,2小于4)。 若一个数列每一项都是前一项和前一项的前一项的和,那么可以表示为: a,b(a为第一项,b为第二项) a=a+b b=b+a #include <iomanip> io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。) iomanip的作用: 主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。 setfill('C') 在预设宽度中如果存在没用完的宽度大小,则用设置的字符填充 setprecision(n) 设显示有效数字为n位(precision n.精确度,准确) setw(n) 设域宽为n个字符(预设宽度)(width n.宽度;广度) setbase(n) : 将数字转换为n进制 当输出长度大于3位时(1000),setw(3)不起作用 setfill和setw只作用于紧随其后的部分 cout<<setfill('C')<<setw(5)<<10<<endl; 输出为:CCC10 setprecision(n)可控制输出流显示浮点数的数字个数(C++默认的流输出数值有效位是6)。 setiosflags(ios::fixed)是用定点方式表示实数。 如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。 求绝对值(absolute): abs(x) int型 labs(x) long型 fabs(x) float型 若求的数为正负间隔的数的和: s=s+i*n; i=-i; cin.get() 用法1: cin.get(字符变量名)可以用来接收字符 char ch; ch=cin.get(); 输入:jljkljkl 输出:j 用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格 char a[20]; cin.get(a,20); 输入:jkl jkl jkl 输出:jkl jkl jkl 输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0') 用法3:cin.get() 没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目) 的不足. error C2059: syntax error : 'bad suffix on number' (syntax 句法,语法;suffix 后缀) 如果出现这个错误,而且下面的错误双击之后一直停顿在同一行代码上,估计就是你犯了把4*s,写成了4s等类似的错误 10=a; a+b=10; a*b=10; 5*b=10; 5+b=10; error C2106: '=' : left operand must be l-value (operand 操作数,运算数) 错误c2106:'=':左操作数必须是l-value l-value中的l被解释为location(n.位置,场所),表示可寻址。 左值表示存储在计算机内存的对象。C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。左值表示存储在计算机内存的对象,而不是常量或计算的结果。或者说左值是代表一个内存地址值,并且通过这个内存地址,就可以对内存进行读并且写(主要是能写)操作;这也就是为什么左值可以被赋值的原因了。 要访问内存,就需要相应的地址以表明访问哪块内存,而变量是一个映射,因此变量名就相当于一个地址。对于内存的操作,在一般情况下就只有读取内存中的数值和将数值写入内存(不考虑分配和释放内存)。在C++中,为了将一数值写入某变量对应的地址所标识的内存中,只需先书写变量名,后接“=”,再接欲写入的数字以及分号。 在书写赋值语句时,应该确保在此语句之前已经将使用到的变量定义过,这样编译器才能查找到相应变量的内存地址,完成计算或赋值。 原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对符号位除外的其他原码逐位取反。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 实现程序的重复运行: int main() { while(true) { statements; } return 0; } C++中参数传递方式有三种:传递参数值、传递参数地址、传递参数的引用。 函数定义时参数列表中的参数称为形式参数(形参);函数调用时参数列表中的参数称为实际参数(实参)。 形参和实参的特点: 1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。 2、实参可以是常量、变量、表达式、函数等。但无论实参是何种类型的量,在进行函数调用时,都必须有确定的值,以便把这些值传送给形参。 3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。 4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参传递给形参,反之不行),参数的值只能传入不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 引用传递: 可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。这时形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作。在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。因此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。