C++点滴(2)

逗号表达式:

若干个表达式以逗号操作符隔开,成为逗号表达式。逗号表达式具有值,其值为最后一个子表达式的值。但逗号表达式的求值过程是从左边第一项开始,逐项进行的。

左值和右值

左值(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、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

值传递:
    形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参传递给形参,反之不行),参数的值只能传入不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。

引用传递:
    可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。这时形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作。在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过栈中存放的地址访问主调函数中的实参变量。因此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值