容易出错的 if 语句
下面列举几个容易出错的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 语句的更多相关文章
- 【详解JavaScript系列】JavaScript之流程语句
一 开篇概述 本讲主要讲解JavaScript流程语句,其大致内容包括如下: 其中,常用的if,while,do..while,for在本片文章就不论述,重点论述for..in..,label,bre ...
- MySQL存储过程中使用SELECT …INTO语句为变量赋值
使用SELECT …INTO语句为变量赋值 在MySQL存储过程中,可以使用SELECT …INTO语句对变量进行赋值,该语句在数据库中进行查询,并将得到的结果赋值给变量.SELECT …INTO语句 ...
- SQL Server高速生成SQL增删改查语句
你还在手写程序生成SQL语句吗?你还在为由于马虎出错的SQL语句而感到无语吗?你还在为不知如何表达复杂的SQL语句而纠结吗?假设你的回答为"是".那你就OUT啦.快来试试应用SQL ...
- Golang switch语句总结
switch 语句基本结构 switch 条件表达式 { case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . . case 常量表达式n: 语句 n default: 语句 ...
- 九个最容易出错的 Hive sql 详解及使用注意事项
阅读本文小建议:本文适合细嚼慢咽,不要一目十行,不然会错过很多有价值的细节. 文章首发于公众号:五分钟学大数据 前言 在进行数仓搭建和数据分析时最常用的就是 sql,其语法简洁明了,易于理解,目前大数 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- MySql - InnoDB - 事务 , Php版
(出处:http://www.cnblogs.com/linguanh/) 1,前序 由于要重构APP(社交类) 服务端接口的部分代码,故接触到了 innoDB,以及事务这个词,下面主要是以例子的形式 ...
- mysql中binlog_format模式与配置详解
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...
- java基础-包
浏览以下内容前,请点击并阅读 声明 为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中.组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注 ...
随机推荐
- Burpsuite如何抓取使用了SSL或TLS传输的 IOS App流量
之前一篇文章介绍了Burpsuite如何抓取使用了SSL或TLS传输的Android App流量,那么IOS中APP如何抓取HTTPS流量呢, 套路基本上与android相同,唯一不同的是将证书导入i ...
- 2017-04-26 ios ipv6那些事(已完美解决)
2017-04-26 ios ipv6那些事(已完美解决) 工作单位性质属于外包公司,每天都有几十的app要提交上传至应用市场,于2017年3月份接到ios工程师反馈 Guideline 2.1 ...
- (转)大白话讲解如何给github上项目贡献代码
转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55 本文献给对g ...
- android使用POI读写word doc文件
目录 1 读word doc文件 1.1 通过WordExtractor读文件 1.2 通过HWPFDocument读文件 2 写word doc文件 Apache p ...
- 【DIOCP开源项目】实际应用案例
案例1 DIOCP是Delphi下进行IOCP服务端通讯开发的一个非常好的开源框架,稳定.高效并且使用起来十分简单. 自己两个多月之前因为需要使用Delphi开发一个TCP服务端,当时也是到处爬文,希 ...
- 使用Maven对JAVA程序打包-带主类、带依赖【转】
很多时候,我们需要对编写的程序进行打包,这个时候,我们可以借助一些项目构建工具,如maven, sbt, ant等,这里我使用的是maven. 打包成可执行有主类的jar包(jar包中无依赖) 以下是 ...
- pip3 install jupyter出现错误
问题描述 出现如下错误: Command "/Users/wang/.pyenv/versions/3.3.1/bin/python3.3 -u -c "import setupt ...
- Spring Boot 中使用WebJars
WebJars能使Maven的依赖管理支持OSS的JavaScript库/CSS库,比如jQuery.Bootstrap等: WebJars是将Web前端Javascript和CSS等资源打包成Jav ...
- 06Vue.js快速入门-Vue组件化开发
组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她 ...
- ASP.NET学习笔记(4)——上传图片
说明(2017-10-8 23:03:43): 1. 后面的内容都是一些杂七杂八的,零零碎碎的,之前都直接略过了,不过其实还是挺重要的,这次重新学习要认认真真敲一遍. 2. 明天中午9号要回北京了,今 ...