文章声明:本系列博客为本人,在学习C语言过程中的一些心得与总结,可能会出现一些错误,希望大家指正,我定会虚心接受并改正。
我们在学习编程的时候一定离不了三种基本结构,即选择结构、循环结构和分支结构。其中在使用选择结构时必定少不了if语句,if语句使用的好会让你的程序干净整洁,运行流畅,但是初学者在使用的时候常常会出现一些错误,导致程序崩溃无法运行。
废话不多说,我们直接来看一下新手使用if语句常见的错误!
一.在if语句的括号后面添加分号
if(a>1);{printf("该值比a大\n");}
将此代码运行之后会发现无论a为何值,结果都会输出 “该值比a大” 的结果,这显然不是我们想要的结果。其原因就是 括号后面的“;”惹的祸,我们仔细分析发现,上面这个代码等价于下面这个代码,我们发现在括号后面多了一句空语句。我们知道,if语句后面没有大括号的时候,只执行离它最近的一条语句,所以在当前代码下,if语句判断为真之后执行了空语句(执行空语句之后什么也不会发生),接着顺序执行了printf语句。
if(a>1){;}{printf("该值比a大\n");}
二.判断相等时使用 =
if(a=0) //错误的写法if(b==0)
在C语言中 = 称为赋值运算符,而 == 才是判断相等的运算符,上面代码执行后,0会把值赋给a,会导致条件恒为假(C语言中0为假,非0为真)。所以在使用的过程中一定要分清,不要弄混淆。
三.判断多个变量是否相等时使用 ==
if(a==b==c) //错误写法if(a==b && b==c)
在C语言中 == 是双目运算符(在使用的过程中需要的变量是两个),所以不能使用这种链式判断,第二句中使用 && (与 运算符,可以理解为并且)即a与b 相等 并且 b等于c,来判断三个变量是否相等。
四.判断条件多个条件时,链式判断
if(1 < x < 5) //错误写法if(x > 1 && x < 5)
如,在判断x大于1小于5的时候,数学中会使用第一种方法,但是在C语言中这种方法是错误的。
五.&&与&混淆
if(x > 1 & x < 5) //错误写法if(x > 1 && x < 5)
&这个符号在C语言中有多种含义,切忌乱用。
1、&符号是指取地址符,是单目运算符
常用于scanf,指针中。
2、&符号是位运算符,表示“按位与”,是双目运算符
用于二进制序列中,全1出1,有0出0。
3、当两个&符号同时使用,即&&符号,代表逻辑运算中的逻辑与
用于比较两个对象,全部条件为真才为真,只要有一个条件为假则全为假,可以理解为并且。
学习编程就是在锻炼自己的逻辑思维,每天进步一点,发现更好的自己!一起加油!