常见编程错误及解决方法,避免踩雷

编程常见问题分析

作为程序员,如果哪一天没有了错误或警告的提示,一定会有一种不祥的预感吧,自从开始编程以来,碰到过很多问题,在遇到错误的时候不要慌,首先看报错,中文直接看,英文翻译看。根据报错找到错误发生的行数,一般错误就在这一行的上下几行代码。


文章目录

  • 编程常见问题分析
  • 编程常见三种错误
    • 1.语法错误
          • 成因分析:
          • 常见错误:
    • 2.逻辑错误
          • 成因分析:
          • 常见错误:
    • 3.系统(编译)错误
          • 成因分析:
          • 常见错误:
          • 想要解决CS1922号错误,你需要找出错误地使用集合对象初始化表达式的代码段。双击Console里的错误,将会把你带到引起该错误的那一行代码上。
          • 想解决CS0266错误,要么将double值转型为float,要么干脆使用float代替double。
          • 通过添加“f”后缀到小数的末尾,就能解决CS0664错误。
          • 在“=”赋值运算符左侧添加变量、属性或者索引器就可以解决CS0131号错误。
          • CS0120错误可以通过创建一个实例来引用这个非静态变量来解决(可以通过创建一个实例来引用这个非静态方法来解决)


提示:以下是本篇文章正文内容,下面案例可供参考

编程常见三种错误

1.语法错误

概念:是指程序中含有不符合语法规定的语句

成因分析:
  1. 编程语言基础语法掌握不熟练
  2. 编写代码时急于求成,不细心
  3. 对某些知识点没有了解透彻,不知道怎么使用
常见错误:
  1. 引号、逗号、分号错误(中文英文逗号、引号等是不同的,注意切换输入法)
  2. 变量未定义(这个不用多说了吧,一写就明了的…)
  3. 变量赋值、运算时显示类型不匹配(如:int a=6;float b=3.14;当使a=b时,会显示类型不兼容,会导致数据丢失。)
  4. 循环条件判断后面是跟着{大括号},不要加上分号,否则循环不完整起不到作用。这种错误也是编程小白会出现的错误。
for(int i=0;i++;i<100)
 {
     Console.Write(i);
 };
  1. 函数参数不匹配(了解函数的作用,需要传什么参数,对照形参传实参)。
  2. 头文件未包含(有时候你在别处看见一个函数,你自己拿来用,发现此函数竟然未定义,你要知道此函数在哪个头文件里面,或者是否是自己定义的)。

2.逻辑错误

概念:是指程序中没有语法错误,可以通过编译、连接生成可执行程序, 但程序运行的结果与预期不相符的错误。

成因分析:
  1. 和语法错误一样,就是不细心
    比如你想判断一个人的名字是不是叫nanyu,但编写程序时却少写了一个n,变成了nayu,在运行时就会发生逻辑错误。
  2. 对于内存不够了解,指针运用不娴熟。
常见错误:
  1. 进行if判断时使用了赋值运算符=,而不是逻辑运算符==(if(a=b)和if(a==b)是完全不同的,相信大家都遇到过)。
  2. 这个是最让人头疼的错误,运行一下代码,好,没问题!随着你的输入等操作,接着弹出一个窗口,大致意思是访问冲突,然后看着代码一脸懵。这个问题错误也有好多:
    (1). 数组越界访问或者越界存数据
    (2). 指针指向了没有权限访问的内存
    (3). 数据转换时数据溢出
  3. 一元运算符 – 和 *的优先级相同,注意使用括号
  4. 在主函数的内部,定义局部变量一定要放在任何函数或语句执行之前,否则肯定报错。

一定要细心细心再细心


3.系统(编译)错误

概念:是指程序没有语法错误和逻辑错误,但程序的正常运行依赖于某 些外部条件的存在,如果这些外部条件缺失,则程序将不能运行。
成因分析:
  1. 外部依赖项路径不正确
  2. 外部依赖项不存在
  3. 路径错误,使用某些函数时找不到此函数
常见错误:
  1. CS1061错误:当你尝试调用一个不存的方法或者访问一个不存的成员时(或者是与关键字冲突),就会引发CS1061号错误。
error CS1061: Type `__’ does not contain a definition for `__’ and no extension method `__’ of type `__’ could be found (are you missing a using directive or an assembly reference?)
  1. CS1526错误:出现CS1526错误的原因是new运算符用法不正确。
error CS1526: A new expression requires () or [] after type
  1. CS0619错误:当一个类型成员使用Obsolete属性标记时(当该实体再也不建议使用时)会发生这样的状况,所以引用这样子的成员时会形成错误。
error CS0619: `__’ is obsolete: `__ is not supported any more. Use __’
  1. CS1922错误:当错误地使用集合对象初始化表达式时就会引发CS1922号错误。集合对象初始化表达式可以被用作在同一行里初始化多个变量或者一次性给数组赋予多个初值的便捷方式。
error CS1922: A field or property `__’ cannot be initialized with a collection object initializer because type `__’ does not implement `__’ interface

解决方案:

想要解决CS1922号错误,你需要找出错误地使用集合对象初始化表达式的代码段。双击Console里的错误,将会把你带到引起该错误的那一行代码上。
  1. CS0266错误:当尝试把一个double类型的值赋给一个float变量时,会引起CS0266号错误。
error CS0266: Cannot implicitly convert type double’ to float’. An explicit conversion exists (are you missing a cast?)

解决方案:

想解决CS0266错误,要么将double值转型为float,要么干脆使用float代替double。
  1. CS0664错误:当声明一个float变量时,输入一个含有小数的数但却并不含“f”后缀时,将会引发CS0664号错误。
error CS0664: Literal of type double cannot be implicitly converted to type `float’. Add suffix `f’ to create a literal of this type

解决方案:

通过添加“f”后缀到小数的末尾,就能解决CS0664错误。
  1. CS1031错误:引起CS0131号错误的原因是,“=”赋值运算符的左侧不是一个变量、不是一个属性、不是一个索引器。
error CS0131: The left-hand side of an assignment must be a variable, a property or an indexer

解决方案:

在“=”赋值运算符左侧添加变量、属性或者索引器就可以解决CS0131号错误。
  1. CS0120错误:在一个静态的方法里尝试直接引用一个非静态的变量时会发生该错误。(在一个静态的方法里调用另一个非静态的方法时会发生该错误。)
error CS0120: An object reference is required to access non-static member `__’

解决方案:

CS0120错误可以通过创建一个实例来引用这个非静态变量来解决(可以通过创建一个实例来引用这个非静态方法来解决)

你可能感兴趣的:(编程错误,笔记,bug)