细节

scanf区别%f和%lf。
严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。
要确保可移植性,就要坚持使用%f。
scanf函数在输入整型数据时不能接受空格、制表符Tab、回车等;
gets函数能够接受空格、制表符Tab和回车等;
string不能接受cin带空格的字符串;
cin不能接受以空格为字符;
getchar()接受以空格,回车为字符;

getline()会读取缓存区的换行符导致直接换行。
所以,getline()函数之前的换行符,要用getchar()吸收。 
getline()函数之后的换行符会被读取,并换行,即不用考虑
获取二进制中最右边的一(权重最小的一)lowbit( x ) = x & ( -x )
std::ios::sync_with_stdio(false);
这句语句是用来取消cin的同步,什么叫同步呢?就是iostream的缓冲跟stdio的同步。如果你已经在头文件上用了using namespace std;那么就可以去掉前面的std::了。取消后就cin就不能和scanf,sscanf, getchar, fgets之类同时用了,否则就可能会导致输出和预期的不一样。 
取消同步的目的,是为了让cin不超时,另外cout的时候尽量少用endl,换用”\n”,也是防止超时的方法。 
当然,尽量用scanf,printf就不用考虑这种因为缓冲的超时了。



cin.tie(NULL)

用此方法解绑 cin 和 scanf
语句 a[i]=i++;是否能正常执行呢?答案很显然是不能的。因为子表达式 i++有一个副作用,就是它会改变 i的值,由于 i在同一个表达式的其他地方被引用,这将导致一个无法判断的结果,无从判断 a[i]中的 i是旧值还是新值。在使用中应该避免此类现象的出现。
C++不支持函数返回局部变量的地址
局部变量在栈中,函数结束内存即被释放,此时返回无效值
解决方法:将局部变量声明为static,生存在堆中

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值