首页 > 其他分享 >C语言常见错误总结

C语言常见错误总结

时间:2024-12-23 16:26:34浏览次数:14  
标签:总结 变量 错误 int C语言 运算符 编译器 函数

语法错误

 

- 括号不匹配:在函数定义、条件语句、循环语句等使用括号的地方,忘记添加或多添加括号,会导致编译错误。例如, if  语句中条件表达式括号不匹配,编译器会提示语法错误信息,指出缺少或多余的括号位置,仔细检查括号的成对性可避免。

- 分号缺失或多余:C 语言语句以分号结束,遗漏分号会使编译器将多行代码视为一行,造成语法混乱;多余分号可能出现在不该有的位置,如在函数定义后、 if  等控制结构后误加分号,导致逻辑错误且不易察觉,编写代码时需留意语句结束处分号的正确使用。

- 变量未声明:使用未预先声明的变量,编译器无法识别该变量,会报错。应在使用变量前确保声明,并且声明位置要符合作用域规则,比如在函数开头声明局部变量,全局变量在函数外声明,遵循先声明后使用原则。

- 拼写错误:变量名、函数名拼写错误是常见问题,如将  printf  写成  print ,编译器会将其视为不同标识符而报错,编程时注意拼写准确性,或利用代码编辑器的自动补全和检查功能纠错。

 

逻辑错误

 

- 比较运算混淆:在条件判断中,误将赋值运算符  =  当作比较运算符  ==  使用,会导致逻辑错误。例如  if (a = 5)  本意是判断  a  是否等于  5 ,但写成赋值语句后,条件恒为真( a  被赋值为  5 ),使程序流程出错,仔细检查条件表达式中的运算符可避免。

- 循环条件错误: for  或  while  循环中,循环条件设置不当,可能造成循环次数过多或过少。如  for (i = 0; i < 10; i++)  若误写成  for (i = 0; i <= 10; i++)  会多循环一次,影响程序结果,编写循环时需仔细斟酌循环条件边界值。

- 逻辑运算符误用: && (与)、 || (或)、 ! (非)逻辑运算符使用错误,如混淆  &&  和  ||  的运算规则,可能导致条件判断结果与预期不符。例如  if (a > 5 && b < 3 || c == 2)  中逻辑运算符的组合若理解错误,会使程序进入错误分支,明确逻辑运算符的短路特性和运算优先级可减少此类错误。

- 数组越界访问:访问数组元素时,下标超出数组定义范围,会读取或修改到无效内存区域,可能引发程序崩溃或数据错误。例如定义  int arr[5];  后使用  arr[5]  或  arr[-1]  等越界下标,要注意数组下标从  0  开始且不超过  数组大小 - 1 ,避免越界访问。

 

语义错误

 

- 函数调用参数不匹配:调用函数时,参数数量、类型与函数定义不一致,会导致数据传递错误。如函数  int add(int a, int b)  被调用时写成  add(3, 4.5) (实参类型不一致)或  add(3) (参数数量不足),编译器可能会进行隐式类型转换(可能导致数据丢失或错误)或报错,调用函数时需对照函数原型检查参数。

- 变量作用域问题:在不同作用域中定义同名变量,可能导致值的意外变化或访问错误。例如在函数内部定义了与全局变量同名的局部变量,在函数内访问该变量时会优先使用局部变量,若误以为操作的是全局变量,会产生逻辑错误,注意变量作用域范围,避免同名变量冲突。

- 指针使用错误:未正确初始化指针就进行解引用,会导致程序崩溃。如  int *p; *p = 5;  中  p  未指向有效内存就赋值,是危险操作;指针运算也需谨慎,如指针偏移量计算错误可能导致访问错误内存地址,使用指针时先确保其初始化,并正确理解指针运算规则。

标签:总结,变量,错误,int,C语言,运算符,编译器,函数
From: https://blog.csdn.net/sl1829355181/article/details/144671562

相关文章

  • 平衡树总结
    从BST引入。我们要高效查找一个值,那么在保证左儿子小于右儿子的二叉树上跳,期望\(O(d)\),\(d\)为深度。二叉搜索树BST最好\(O(\logn)\),最坏\(O(n)\)。左子树的权值小于根的权值小于右子树的权值。P用没有。替罪羊树是一种依靠重构来维持平衡的重量平衡树。在插入删除时发现......
  • 链剖分总结
    来解决树上DS问题。因为没有能够直接高效维护树型结构的DS,于是把树剖分成链,然后拿序列上的DS去维护每一条链的信息。树链剖分有很多种:轻重链剖分,长链剖分,虚实链剖分。轻重链剖分这里是轻重链剖分。常数很小。其实不一定要用线段树维护,但用线段树维护是最常见的。支持换根,路......
  • Tact智能合约安全实践:TON生态系统中的常见错误
    TON(TheOpenNetwork)以其创新特性和强大的智能合约性能,不断拓宽区块链技术的边界。基于早期的区块链平台(如以太坊等)的经验与教训,TON为开发者提供了一个更加高效且灵活的开发环境。其中推动这一进步的关键要素之一便是Tact编程语言。Tact是专为TON链设计的一种全新编程语言,以高......
  • 轻松解决《原地起啡》DLL错误频发问题,畅享游戏乐趣
    《原地起啡》是一款深受玩家喜爱的游戏,但在游戏中有时会遇到DLL文件丢失的问题,导致游戏无法正常启动或频繁崩溃。幸运的是,使用DirectX修复工具可以有效解决这一问题。以下是详细的步骤,帮助玩家快速修复DLL文件丢失的问题。1.下载DirectX修复工具:•访问官方网站或其他可信的......
  • 解决《浮岛物语》DLL错误频发,轻松畅玩游戏
    《浮岛物语》是一款深受玩家喜爱的冒险建造类游戏,但在游玩过程中,不少玩家遇到了DLL错误频发的问题,导致游戏无法正常启动或频繁崩溃。为了帮助大家顺利解决问题,以下是一些有效的处理方法,确保您能够畅享游戏的乐趣。1.验证游戏文件完整性:首先,通过Steam或其他游戏平台验证游......
  • 鸿蒙Next ArkTS编程规范总结
    一、目标和适用范围ArkTS编程规范参考业界标准及实践,结合ArkTS语言特点,旨在提高代码的规范、安全和性能,适用于开发者使用ArkTS编写代码的系统开发或应用开发场景。二、规则来源ArkTS在TypeScript基础上强化静态检查和分析,部分规则源于《OpenHarmony应用TS&JS编程指南》,并为ArkT......
  • 79.尚庭公寓项目总结收获
    单体项目技术来自尚硅谷:https://www.bilibili.com/video/BV1At421K7gP/?spm_id_from=333.337.search-card.all.click&vd_source=eb2341710c995d8261ecc99fdd066ba71.Typora的使用用的其实就跟博客园写记一样的markdown形式但我是习惯于win自带的记事本或是直接博客园但是......
  • 大语言模型学习工具及资源总结和落地应用
            当前,随着人工智能技术的迅猛发展,大语言模型(LargeLanguageModels,LLMs)在各个领域的应用日益广泛。以下是国内外常见的大语言模型工具、已经落地部署的应用以及学习相关的网站和资源的详细介绍。一、国内外常见的大语言模型工具国际大语言模型1.OpenAIGPT......
  • IOS C语言入门
    windows配置c的运行环境//单行注释/* 多行注释*//*数据类型一基本类型 1.整型 -short -int -long 2.浮点型 -float -double 3.字符型 -char二数组 intarr[3]; arr[0]=1; arr[1]=2; arr[2]=3; intnum[3]={1,2,3};*/......
  • c语言读入和输出的函数比较
    背景:随着我们接触越来越多的题目,scanf和printf可能逐渐不够用了,接下来笔者将列举几个常见输入和输出,并比较正文:fscanf和fprintf    //格式化读取和输出这个对我来说还没太多应用就不输入展开,举个简单例子#include<stdio.h>intmain(){FILE*fp;int......