1、Floating point exception: 8(浮点异常:8)
程序运行到某处,出现:Floating point exception: 8(浮点异常:8);程序不再继续执行。
搜索发现:是while()里的条件:n >= 0不对,把条件改成 n > 0即可。
在网上搜索发现,大家出现这个错误的时候,都和0有关,如:m%n时未及时令n不等于0,等等。
此错误为非法除以0出现的错误。
2、报错:segmentation fault:11 (内存越界)
这个报错的原因就是访问范围超出了内存分配的范围,在存储方面找找原因。本次出错是因为在递归时最低时定义到了n= 1时的情况,但是却使用到了 n = 0时,于是报错。
3、报错:error: use of undeclared identifier 'y'(引用错误)
在写的过程中,用到了引用(&),错误原因:对引用的错误使用。
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。其格式为:类型 &引用变量名 = 已定义过的变量名。
涉及的代码:
void turn(int x, int y)//无引用 { int t; t = x; x = y; y = t; } void turn(int &x, int &y)//添加"&"引用 { int t; t = x; x = y; y = t; } int main() { int a, b; scanf("%d%d", &a, &b); turn(a, b); printf("%d %d\n",a,b); return 0; }
结果:不添加引用时,最后输出的值没有被交换,添加引用后,如果是C++,则会交换值,但是如果是纯C语言,则会报错,认为你的x,y没有被定义过。
我一直以为在纯C语言环境里,不可以使用引用,但是后面我又使用了引用,结果正常运行了,看来是我没有用对。
我又使用了一次,报错了,看了纯c的环境下的确无法使用&,建议在自定义函数里使用指针,然后在main函数里调用时,使用&:
例如:
#include <stdio.h> #include <stdlib.h> #define InitSize 10 //定义最大长度 typedef struct { int *data; int MaxSize; int length; }SeqList; //每个数据元素分配空间大小 MaxSize* sizeof(ElemType); //顺序表的实现——动态分配 void InitList(SeqList *L) { L->data = (int *)malloc(InitSize * sizeof(int)); L->length = 0; L-> MaxSize = InitSize; } //增加动态数组的长度 void IncreaseSize(SeqList *L,int len) { int *p = L->data; L->data = (int *) malloc((L->MaxSize+len)*sizeof(int)); for (int i = 0; i < L->length; i++) { L->data[i] = p[i];//将数据复制到新区域 } L->MaxSize = L->MaxSize+len;//顺序表最大长度增加 len free(p); //释放原来的内存空间 } int main() { SeqList L; //声明一个顺序表 InitList(&L);//初始化顺序表 IncreaseSize(&L,5); return 0; }
4、excess elements in scalar initializer [-Wexcess-initializers]
int arr ={1,2,3};
报错:标量初始化器中的多余元素
原因:没有定义而直接初始化。
改正:int arr[10] = {1,2,3};
5、没有正确使用i++和++i
i++:
#include <stdio.h> int main() { int i = 0; while (i++) { printf("while里的i = %d\n",i); if (i == 3) { break; } } printf("while循环外的i = %d\n",i); }
输出结果:while循环外的i = 1
++i:
#include <stdio.h> int main() { int i = 0; while (++i) { printf("while里的i = %d\n",i); if (i == 3) { break; } } printf("while循环外的i = %d\n",i); }
输出结果:
while里的i = 1
while里的i = 2
while里的i = 3
while循环外的i = 3总结一下:如果使用i++的话,执行过程:while(i)//这里i=0。{…},执行完{}里的内容后再i=i+1.
在上面的例子里,i=0则while(0),只有while(1)时才执行,所以不会执行while里面的东西。
如果使用++i的话,执行过程:
i=i+1,i=1,
while(i){输出while里的i = 1,且判断出i<3},
继续循环,i=i+1=2,
while(2){输出:while里的i = 2,且判断出i<3}
继续循环,i=i+1=3,
while(3){输出:while里的i = 3,且判断出i=3,break;}
那么此时输出:while循环外的i = 3
当然,并不是所有情况下,都会结果不同,有些情况下,结果一致。
6、解决 打开VS code报错:Unable to resolve your shell environment in a reasonable time.( 无法在合理的时间内解析shell环境。请检查shell配置,然后重启)
MacBook Pro每次重启后立刻唤醒 VS Code 的时候,总会弹出提示:Unable to resolve your shell environment in a reasonable time.( 无法在合理的时间内解析shell环境。请检查shell配置,然后重启)
打开 VS Code 的方式有:命令行启动code path/to/file或者
点击应用图标。这个报错出现在通过点击应用图标来进入VScode。来自于:
作者:越前君
链接:https://www.jianshu.com/p/b669dac20e02
来源:简书
我按照该博主的方法进行修改了,确实是因为NVM的原因,但是并没有解决问题。
这个报错给了重启、配置、详细内容三个选项,点击配置以后发现,解析shell环境的时间是10秒,也就是说,10秒之内未成功解析shell,就会报这个提示。只需要把解析时间变长即可。(点击“配置”选项,将10改为更大的数即可)。