C++ 语言有哪些常见编程错误? | 您所在的位置:网站首页 › origin输入负数 › C++ 语言有哪些常见编程错误? |
这篇文章更多的是新手向的,如有错误欢迎指出 最近更新:2023/3/4 写在前面: 1.在VScode中,如果你编译失败,系统会运行你上一次编译成功(但可能是连接失败)的文件,所以如果你发现自己明明更改了这个错误,但是运行程序后仍然和上次的结果相同,这就要看看更改后的程序是否出现编译错误了。 2.造成错误的原因往往是复杂的,一些错误笔者只能给出常见的可能的原因,这就是为什么我说这篇文章是“新手向”的。如果读者在查阅这篇文章后仍然感到疑惑,可以评论/私信,或者自行百度。 3.造成错误的原因多样,错误提示也是多样的。这里也不可能罗列所有错误类型,因此错误提示中可变的部分笔者用xxx表示,而读者在搜索时也不要将整个错误提示填在搜索框内,而是截取其中的一小部分固定的部分进行搜索。 4.不同的IDE(集成开发环境,即你写代码的那个软件)对相同的错误类型的错误提示语句不尽相同,笔者这里是根据VScode(部分会附上Dev)的错误来写的,因此如果读者发现自己的IDE报错和这篇文章中提到的不一样,还请见谅 一、Arithmetic exception算术错误,检查是否出现分母为0、负数根式的情况 比如: printf("%d",1/0);二、Segmentation fault段错误,检查是否有以下问题: 1. 调用没有对象的野指针,建议在定义指针的时候new或者malloc一块空间给它(不要直接给指针赋0)比如: int* p; //p是没有对象的野指针 *p=3; //对野指针赋值建议改成(malloc需要加头文件,C++中直接用new),: int* p=(int*)malloc(sizeof(int)); //malloc函数返回类型是void*,需要强制类型转化一下 int* p=new int;2. 指针并不是野指针,但是它指向NULL或者指向受系统保护的区域比如以下两种情况: int* p=0; int* p=NULL;建议和1一样,分配一块动态内存 3. 下标越界,访问某个数组超出其定义下标的值比如: int array[3]={0}; //只定义到3 cout>、[]等操作数是这些运算符所需要操作的对象,比如+运算需要有左右两个数,而++运算是对一个数操作的 出现这个错误一般是操作数的类型与操作符所要求的不匹配,比如(string类型需要头文件): 1.使用系统的类时出错,或者尝试对不正确的类型进行运算符操作比如: string a="abc"; cout>3; //正确的应为cout |
CopyRight 2018-2019 实验室设备网 版权所有 |