初学c语言常见错误
来源:互联网 发布:88lezy现在的域名是 编辑:程序博客网 时间:2024/06/16 13:42
(1)忘记定义变量
例如:
int main()
{
x = 3;
y = 6;
printf("%d\n", x + y);
}
c语言要求对程序中用到的每一个变量都要定义其类型,上面程序中没有对x,y进行定义,应该在函数的开头加上int x,y;
(2)输入输出的数据类型与我们输入输出的格式不一样
例如:
int a = 10;
float b = 4.5;
printf("%f, %d\n", a, b);
这显然是错误的
(3)未注意int和short数据的数值范围 (-2^15~2^15-1)
举例:
int a = 89034;
printf(”%d\n“, a);
此时a的值已经超出了整形的范围,打印出来的值是错误的,对于超过范围的数要用long型
printf(”%ld\n“, a);
(4)在使用scanf函数时,忘记用取址符&
举例:
scanf(”%d%d“,a,b);
这是个很常见的错误,没有加取址符应该为
scanf(”%d%d“,&a, &b);
还要注意的是scanf函数里不用”\n“结尾
scanf(”%d%d\n“, a, b);
这是错误的,要去掉\n
(5)输入数据的形式与要求不符
scanf(”%d%d“, &a, &b);
有人按照这种方法输入:
6,8 中间用逗号分开的这是错误的
这种数据应该用回车来输入。
scanf(“%d,%d”, &a, &b);
这种输入时才采用加逗号的形式
6,8
(6)用scanf函数输入数据时,在数组名前加了取址符&
例如:
char a[20];
scanf("%s", &a);
这种写法是错误的,在对变量输入数据时应该加&,意思是把数据传到这个地址去,而数组名a本身就是地址,再加&就是多余了。
(7)用scanf函数向数值型数组输入数据时,用数值型数组名
例如:
int a[20];
scanf("%s", a);
这是错误的,正确的如下:
int a[20] = {0};for(int i = 0; i < 20; i++){scanf("%d",&a[i]);}
(8)语句后面没加分号
例如:
a = 3
b = 4;
系统在检查到第二行时会报错,但是是第一行的结尾没有加分号导致的,很不好发现
(9)在不该加分号的地方加了分号
例如:
if(a > b);
{
printf("a 比b 大\n");
}
由于在(a > b)后面多加了一个分号,前后没有关联性,函数都会答应”a比b大“,失去了它原本的判断的意义。
(10)容易混淆”=“ 和”==“
注意这是两个不同的运算符”=“是赋值运算符,把右边的值赋给左边,是一个值拷贝的过程,”==“是关系运算符,用来判断两个表达式是否相等。
(11)括号不配对
在一个程序中存在多个括号时容易出现这种错误,在建立括号时,我们最好一次把左右括号打全,避免出现错误。
(12)在使用标识符时,混淆了大写字母和小写字母的区别
例如:
int main()
{
int A, B, C ;
a = 2;
b = 3;
c = a +b;
printf("%d\n", a , b, c);
}
本题定义了大写字母,使用时用了小写字母,系统把大小写看做两个不同的变量,认为小写字母未经定义使用出错。
- 初学c语言常见错误
- c语言初学错误
- C语言常见错误
- C语言:常见错误
- 【C语言】常见错误
- c语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言常见错误
- C语言中常见错误
- C语言中常见错误
- C语言常见错误小结
- C语言常见错误小结
- 网络基本功(七):细说IP地址与子网
- 【BZOJ1996】【Hnoi2010】chorus 合唱队 动态规划
- 异常捕获及处理
- python编码类型转换及字符集探讨
- 【SSH进阶之路】Spring的AOP逐层深入——采用注解完成AOP(七)
- 初学c语言常见错误
- IT大数据服务管理高级课程
- 网络基本功(八):细说TCP滑动窗口
- SNMP入门--SNMP4J实现SNMP
- 图存储与遍历的一些技巧
- GridView多表头&固定表头&单击选中整行&合并行
- 国内docker源代码安装过程问题解决
- 网络基本功(九):细说TCP重传
- JSP标准标签库-c标签等