我使用的编译器:C-FREE 5.0
都是平时遇到的问题积累,所以没有什么章法规律,见谅见谅。
————————————————————————————————————————————————————————————————————————
1.
错误提示:“0x77c14995指令引用的0x7c92e920 内存 该内存不能为"written"”
错误原因:
一般为输入时编写错误,例如data前缺少‘&’
————————————————————————————————————————————————————————————————————————
2.
错误提示:
[Error] D:\My Documents\C-Free\Temp\未命名1.cpp: error: invalid types `double[100][double]' for array subscrip
错误原因:
int a[100];
double i;之后
使用了 a[i];
[]里面应该用int型数 而不能用double型。
——————————————————————————————————————————————————————————————————
3.
错误提示:
ox004015488”指令引用的“0x6464694b”内存。该内存不能为“read”。
错误原因:
不允许直接将字符串赋予指针 比如char *p; sancf("%s",p);错误 正确 char *p="dadasd"在声明时就赋值 char *p; p="sdadsa" 声明后赋值 char a[10],*p=a; scanf("%s",p); 正确,这是最常用方法
——————————————————————————————————————————————————————————————————
4.
错误提示:
[Error] D:\My Documents\C-Free\Temp\未命名3.cpp:8: error: ISO C++ forbids comparison between pointer and integer
错误原因:
while(gets(a)!=EOF) 本条语句错误
因为 gets的返回值是char*。
应该改为 while(gets(a)!=NULL);
————————————————————————————————————————————————————————————————————
5.
错误提示and错误原因:
如果发现已经 char a[2];
int n;
while(scanf("%d",&n)!=EOF)
for(i=0;i<n;i++)
gets(a[i]); 时
输入两行字符。如 i love acm; i love you;
只能读入一行字符,
那么就是while语句错误;
请将while(scanf("%d",&n)!=EOF) 改为 while(scanf("%d ",&n)!=EOF)
空格是很重要滴~
——————————————————————————————————————————————————————————————————————
6.
错误提示:
error: invalid operands of types `double' and `int'
错误原因:
例如错误的编程语句为: printf("%d\n",pow(A%1000,B%1000)%1000);
其中 pow(A%1000,B%1000) ,返回的时double型,而 %d 输出的是int 型,所以出错。
可以改为 :printf("%d\n", (int)pow(A%1000,B%1000) %1000 ) ;
————————————————————————————————————————————————————————————————————
7.
错误提示:
[Warning] D:\My Documents\C-Free\Temp\未命名2.cpp:7:22: warning: multi-character character constant
错误原因:
例如错误的编程语句为: printf("%s\n",'YES');
其中 错在 YES 的两边的 ‘ ’ 上。 ‘ ’ 应该用在单个字符上 ,所以出错。
可以改为 :printf("%s\n",”YES“);
————————————————————————————————————————————————————————————————————
8.
错误提示: