C与C++中非常少犯的错误,犯了后却非常难找出的错误
1.continue,break类的错误(HDU1877)
:
#include<iostream>
using namespace std;
int main()
{
int a,b,m,sum;
while(cin>>m,m)
{
int p[100]={0};
cin>>a>>b;
sum=a+b;
if(!sum)//是0的话就不用再进行考虑了
{
cout<<0<<endl;
continue;//闲着没事,做个简单题,却由于忘了 continue 而 Presentation Error 了非常多次
}
int i=0;
while(sum)
{
p[i]=sum%m;
sum/=m;
i++;
}
for(int j=i-1;j>=0;j--)
cout<<p[j];
cout<<endl;
}
}
2.memset函数将数组初始化为1(from 百度文库
)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#include <iostream> |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream> |
memset还是按字节赋值,这样赋值完以后,每一个数组元素的值实际上是0x01010101即十进制的16843009。
3.while((c=cin.get())!='#')
本来想举个简单的样例。可是被这个坑得太慘了。所以。
。记住不是==,而是=。
c=getchar()一样。
#include<iostream>
#include<set>
#include<string>
using namespace std;
int main()
{
set<string> st;
string str;
char c;
str.clear();
while((c=cin.get())!='#')
{
while(c!=' '&&c!='\n')
{
str+=c;
c=cin.get();
}
if(str.length())
{
st.insert(str);
str.clear();
}
if(c=='\n')
{
cout<<st.size()<<endl;
st.clear();
str.clear();
}
}
return 0;
} <span style="font-size:18px;">
</span>
4.c++程序中。假设用#include<iostream>和cin的话。就避免不了使用名字空间。using namespace std;。。。我竟
然有一次删掉部分原来的代码又一次敲代码的时候,忘掉了写上了,结果浪费了好长时间(夹杂其它事),记住了这个教训。不止一次了.
5.已经定义了全局变量,还傻冒似的又定义了局部变量,结果覆盖了全局变量的作用,还不报错,非常少犯啊。,。非常难找出来啊,,,
6.scanf("%d%d%d",&t1,&t2,&t3,&t4); 少个%d居然不报错,居然少了,这就是依照曾经代码改动的坏处吧。改不好就呜呜了,加强能力
7.数学公式运算
pow运用于整数型会出错。由于除以会取整,要用浮点型才可能得到正确结果。
pow(10.0,num++);
8.关于数据范围的错误,so能尽量打就尽量大吧
#include<cstdio>
using namespace std;
long long a[100005]={0};
int main()
{
for(long long i=1;i<100002;i++)
{
if(i%3==0)
a[i]=a[i-1]+i*i*i;//i的3次方
else
a[i]=a[i-1]+i;
}
int n;
while(scanf("%d",&n)&&n>=0)
{
printf("%lld\n",a[n]);
}
return 0;
}
9.在for循环中使用strlen()函数,假设循环次数过多,就会导致超时,所以还是回归原始可靠的用变量定义吧。
採用
int len = strlen(str);
for(int i = 0;i < len;i++)
{ }
pass掉
for(int i = 0;i < strlen(str);i++)
{ }
C与C++中非常少犯的错误,犯了后却非常难找出的错误的更多相关文章
- Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件
第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...
- DELPHI语法基础学习笔记-Windows 句柄、回调函数、函数重载等(Delphi中很少需要直接使用句柄,因为句柄藏在窗体、 位图及其他Delphi 对象的内部)
函数重载重载的思想很简单:编译器允许你用同一名字定义多个函数或过程,只要它们所带的参数不同.实际上,编译器是通过检测参数来确定需要调用的例程.下面是从VCL 的数学单元(Math Unit)中摘录的一 ...
- SQL中減少日志文件大小
SQL中減少日志文件大小 编写人:CC阿爸 2014-6-14 在日常SQL数据库的操作中,常常会出现SQL日志文件超大,大小都超过正常MDF数据库文件,作为一般用户来讲,LDF太大,只会影响服务 ...
- 在Spark中尽量少使用GroupByKey函数(转)
原文链接:在Spark中尽量少使用GroupByKey函数 为什么建议尽量在Spark中少用GroupByKey,让我们看一下使用两种不同的方式去计算单词的个数,第一种方式使用reduceByKey ...
- 关于在php中变量少写了一个$和页面不断转圈的问题排查和vim的自动补全方式
php中的所有变量都是页面级的, 即任何一个页面, 最多 都只能在一个文件 : 当前页面内使用, 不存在跨 文件/ 跨页面的 作用域的变量! 因此, 即使是 $GLOBALS 这个变量, 虽然叫全局 ...
- 集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。
集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误. 解决的方法是添加类型的判断. LinkedList接口(在代码的使用过程中 ...
- 异步控制---实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出“end”
实现函数asyncAll,在执行完传入数组中func1,func2,func3异步函数后,输出"end" function func1(callback) { setTimeout ...
- HTML中head里的内容经浏览器解析后全到body里了
HTML中head里的内容经浏览器解析后全到body里了 修改完代码后,用chrome审查元素,head里的内容都到body中去了 http://bbs.csdn.net/topics/3802586 ...
- 在Eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误
在eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误 原因:Tomcat被删除或者是重新安装,并且安装目录改变了. ...
随机推荐
- Using an open debug interconnect model to simplify embedded systems design
Using an open debug interconnect model to simplify embedded systems design Tom Cunningham, Freescale ...
- RTL8188EUS带天线的WiFi模块
http://www.liuliutech.com/ProductShow.asp?ID=121 一,公司介绍瑞昱(REALTEK)半导体成立于1987年,位于台湾[硅谷]的新竹科学园区.凭借着7位创 ...
- DiscuzX2.5 程序底层架构
程序底层架构 • 要求PHP版本大于5.1,抛弃了对PHP4的支持 • 大量使用了面向对象编程(OOP) • 实现了程序运程过程中按需加载,按需加载主要是针对类文件 • 对目录名.文件名和类名的要求 ...
- Known BREAKING CHANGES from NH3.3.3.GA to 4.0.0
Build 4.0.0.Alpha1 ============================= ** Known BREAKING CHANGES from NH3.3.3.GA to 4.0. ...
- 【mysql】mysql统计查询count的效率优化问题
mysql统计查询count的效率优化问题 涉及到一个问题 就是 mysql的二级索引的问题,聚簇索引和非聚簇索引 引申地址:https://www.cnblogs.com/sxdcgaq8080/p ...
- 如何将Emmet(ZenCoding)安装到到Dreamweaver8?
用过其他版本的Dreamweaver,还是习惯了Dreamweaver8,占用少,插件也容易安装,下面讲的是ZenCoding插件的安装方法,当然现在这个已经叫Emmet了. 安装方法: a.下载dw ...
- 【堆栈平衡的说明太有才了】转贴自Jim's blog
先说明.原发者iso9001 http://www.ghoffice.com/bbs/read.php?tid-35165.html他提供的地址(当他是个指针好了:P)http://ajiannet. ...
- pytest文档11-assert断言
前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed ...
- 5)Linux程序设计入门--信号处理
)Linux程序设计入门--信号处理 Linux下的信号事件 前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 信号的产生 信号的处理 其它信号函数 一个实例 .信号 ...
- Hadoop Combiners
In the last post and in the preceding one we saw how to write a MapReduce program for finding the to ...