下面列举几个容易出错的if语句实例,如果后续还有新的发现,还会继续更新!

出错一:在括起控制表达式的括号后面加分号

    int n = ;
if(n > );
printf("值为正");

初次运行,感觉一切正常,没有错误,这时我把n的值改为-5重新编译后,------结果还是为正。

这是为什么?

仔细一瞧,我们发现在(n > 0)后面我们多加了个分号!!!

原因:只有一个分号的语句叫做空语句(执行空语句后什么也不会发生),因此可以这样理解:

    if(n > )
;
printf("值为正");

若执行该if语句,无论n是什么值(正、负和0),结果都会显示“值为正”。

出错二:判断相等性时使用 =

不要把判断相等性(是否相等)时使用的 == 运算符和 = 混淆。

错误: if(a = 0)

正确: if(a == 0)

原因:在第一个错误的例子中,变量a会被赋值为0。另外,不管a的值如何,该语句都不会被执行。

出错三:判断三个变量的相等性时使用 ==

下面是判断变量a、b、c的值是否相等的例子。

错误:if(a == b == c)

正确:if(a == b && b == c)

原因:相等运算符 == 是双目运算符,所以 a == b == c 不能实现对三个变量的判断。

出错四:两个条件的判断不使用 && 或 ||

下面是判断变量a是否大于等于3小于等于5的例子。

错误:if(3 <= a <= 5)

正确:if(a >= 3 && a <= 5)

出错五:使用以 bit 为单位的逻辑运算符代替逻辑运算符

下面是判断变量a是否大于等于3小于等于5的例子。

错误:if(a >= 3 & a <= 5)

正确:if(a >= 3 && a <= 5)

原因:逻辑运算符中使用的是 && 或 || 运算符,不要与 & 、| 混淆,它们是不同的。

运算符

形式

名称

综合性

&

X & Y

按位与运算符

|

X | Y

按位或运算符

&&

X && Y

逻辑与运算符

||

X || Y

逻辑或运算符

容易出错的 if 语句的更多相关文章

  1. 【详解JavaScript系列】JavaScript之流程语句

    一 开篇概述 本讲主要讲解JavaScript流程语句,其大致内容包括如下: 其中,常用的if,while,do..while,for在本片文章就不论述,重点论述for..in..,label,bre ...

  2. MySQL存储过程中使用SELECT …INTO语句为变量赋值

    使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...

  3. SQL Server高速生成SQL增删改查语句

    你还在手写程序生成SQL语句吗?你还在为由于马虎出错的SQL语句而感到无语吗?你还在为不知如何表达复杂的SQL语句而纠结吗?假设你的回答为"是".那你就OUT啦.快来试试应用SQL ...

  4. Golang switch语句总结

    switch 语句基本结构 switch 条件表达式 { case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . . case 常量表达式n: 语句 n default: 语句 ...

  5. 九个最容易出错的 Hive sql 详解及使用注意事项

    阅读本文小建议:本文适合细嚼慢咽,不要一目十行,不然会错过很多有价值的细节. 文章首发于公众号:五分钟学大数据 前言 在进行数仓搭建和数据分析时最常用的就是 sql,其语法简洁明了,易于理解,目前大数 ...

  6. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  7. MySql - InnoDB - 事务 , Php版

    (出处:http://www.cnblogs.com/linguanh/) 1,前序 由于要重构APP(社交类) 服务端接口的部分代码,故接触到了 innoDB,以及事务这个词,下面主要是以例子的形式 ...

  8. mysql中binlog_format模式与配置详解

    mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...

  9. java基础-包

    浏览以下内容前,请点击并阅读 声明 为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中.组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注 ...

随机推荐

  1. crontab -e 新法

    SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 0 3 * * * /home/rsync.sh //每天晚上3点执行一次同步 ...

  2. ARKit从入门到精通(3)-ARKit自定义实现

    转载:http://blog.csdn.net/u013263917/article/details/73038566 在上一小节中ARKit从入门到精通(2)-ARKit工作原理及流程介绍,我们完整 ...

  3. IOS 禁止侧滑返回上个页面功能

    1.首先把顶部左侧返回按钮隐藏掉 //隐藏返回按钮 self.navigationItem.hidesBackButton = YES; 2.1.再禁止页面左侧侧 //禁止页面左侧滑动返回,注意,如果 ...

  4. [转]JSP页面的动态包含和静态包含示例及介绍

    原文地址:http://www.jb51.net/article/53659.htm 一.静态包含 本文介绍JSP静态包含语句,即使用JSP的include指令来完成的包含操作.JSP中,有两种包含其 ...

  5. cas单点登录-CAS5.1.3 overlay服务器搭建(二)

    前言    本节主要讲解怎么搭建cas服务端,并且在浏览器中使用https访问cas服务端 1.通过cas代码生成工具(https://casinitializr.herokuapp.com/),生成 ...

  6. mysql的骚操作:自增长的字段同时插入到另一个字段

    如题 ' ); select * from information_schema.tables where table_schema ='mytest' and table_name='users'; ...

  7. MapReduce教程(一)基于MapReduce框架开发<转>

    1 MapReduce编程 1.1 MapReduce简介 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,用于解决海量数据的计算问题. MapReduce分成了两个部分: ...

  8. FutureTask 源码分析

    FutureTask 源码分析,这个类的原理与我分析android当中的FutureTask类差不多[http://www.cnblogs.com/daxin/p/3802392.html] publ ...

  9. Iconfont在移动端应用的问题

    关于部分奇葩用户代理不显示字体图标 以酷派为代表的部分安卓手机自带浏览器.微信/QQ WebView 等用户代理无法正常显示 Icon Font,原因可能是这些用户代理无法正确处理伪元素 conten ...

  10. c# 自定义类型的DataBindings

    自定义类型TextBoxEx,扩展了TextBox,增加了一个属性KeyText来保存后台的值(Tag已另作它用). 程序里面需要将KeyText和DataTable的某个列绑定起来. 如果是Text ...