C51语言编写常见错误
一、循环
1)、在进行while,do...while循环时要对while括号里面的变量赋初值,否则可能出现的不是自己想要的结果。
2)、在写for循环语句中,特别要注意括号里面的变量要一致(例如:for(i=0;i<8;j++)。。。)错误。这个错误不好改,写程序时一定要注意这一点。
3)、在写for循环时,如果想让变量的值一次性增加不是一而是大于一,这时要注意最后变量的变化要写成表达式例如:i=i+10;不要写成i+10,这个不起作用。4)、在写循环时,对某些变量赋初值时,注意赋初值所放的位置,是放在循环里面还是外面。不同的地方可能得到的结果不同。要注意
二、结构体、链表
1)、在创建链表时,最好对首个结点赋值,否则在编译时可能会出现错误。(如:后面会显示屯屯屯屯屯屯?)。
三、条件语句
1)、在运用if条件语句时,括号里面的等于不要写成赋值号(例如:if(a==1)不要写成if(a=1))。也就是说在if语句的条件中不要出现赋值号。
四、函数
1)、在函数进行参数传递时类型要一致,且只能是实参传递到形参,不能反过来传递。传递的实参必须是常量(在使用的时候)。
2)、在写主函数时,定义一些变量、数组或指针时,最好在主函数的最前面就定义,否则可能会出现错误。
3)、在写输入函数scanf时,后面的变量前面要加取地址符(例如:scanf(“%d”,&a),不要省略&)。4)、在写字符串复制函数(strcpy)时切忌写错,把strcpy写成stycpy。
5)、不能直接把字符串赋给一个变量,如果要把一个字符串赋给一个变量,需要用到字符串复制函数strcpy,这个函数包含在“string.h”头文件里面,用时需要将此头文件写在程序的开头。Strcpy(char *a,char b ),将字符串b复制到字符串a里面,注意字符串a的长度要大于等于字符串b,返回值为字符串a。
五、运算
1)、在计算两个数的成积时,不要省略乘号*,例如:s=-b/(2*a)正确;s=-b/2a 错误;
2)、在进行除法运算时,要注意除法与取整的区别。
六、其他错误
1)、在程序中用到51单片机时,头文件要写#include<reg52.h>,不要只写#include<stdio.h>。2)、在运行结果进行输入的时候注意输入法(要用英文),否则可能出现上面的错误。
3)、在主函数里面定义的变量,在主函数调用其它函数时,变量是不可用。要注意这一点。
ARM编写程序错误集锦
1、在编译时出现“last line of file ends without a newline”这个警告时怎么办?(在最后一行按回车键)
2、在ARM模块化编程中,如果有头文件,要在c/c++或asm中添加头文件路径。
3、在编译时出现“loop is not reachable from preceding code”警告时(检查一下是不是附近上句或下句多了一个分号)
4、在编译时出现function “Uart_ch declared implicitly”警告时怎么办?看看是不是在自己写的头文件中没有声明
5、在串口初始化时,如果是只读的,不必对他初始化。初始化是对于写或读写的。但是要在头文件里声明其地址。否则会提示你没有定义。
6、能发送也能接受,但是用字符格式显示不出来,
用十六进制格式显示的全是00 00 00。。。怎么回事?结构体数组不能作为参数传递给函数
7、在编译时出现declaration may not appear after executable statement in block警告时可能的原因是:在一个函数里面定义变量一定要在调用函数之前。8、如果在定义一个数组时,加code后表明这个数组的内容不可以改变。若在后面的程序中友改变了这个数组的值,在编译时会报错unmodifiable value(即无法修改值)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。