容易出错的 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基础-包
浏览以下内容前,请点击并阅读 声明 为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中.组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注 ...
随机推荐
- Android 网络请求get/post工具类:NetUtil
package com.net.util; import java.io.IOException; import java.io.UnsupportedEncodingException; imp ...
- DIOCP开源项目-数据库连接池的使用<多帐套数据库>
很久没有写DIOCP的Demo了,主要公司的事情太繁琐,工作之余都不想动了,之前承若的群里面朋友们的DEMO,昨天晚上恶补了一下,把对数据库连接池的操作加入到了Demo中,大家可以通过SVN下载到最新 ...
- chrome访问不了go语言中文网
最近开发转用golang语言,所以经常在晚上搜资料,结果发现go语言中文网,我居然访问不了,刚开始以为是跟go有关,所以被防火长城屏蔽了,结果,偶尔讨论发现办公室的其他两个同事都可以访问,真是奇了怪了 ...
- android adb 读写模式 挂载文件系统
http://www.qylk.blog.163.com/blog/static/1346873562013092154430/ http://blog.sina.com.cn/s/blog_9906 ...
- 01-老马jQuery教程-jQuery入口函数及选择器
前言 这套jQuery教程是老马专门为寒门子弟而录制,希望大家看到后能转发给更多的寒门子弟.视频都是免费,请参考课程地址:https://chuanke.baidu.com/s5508922.html ...
- mybatis中的.xml文件总结——mybatis的动态sql
resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...
- 4. 集成学习(Ensemble Learning)Adaboost
1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...
- iOS友盟推送测试模式添加手机设备报红解决如下
设备描述红色一般是没有往友盟发日志,或者appkey漏掉了.先检查是否正确的填写了推送的appkey,统计的方法为MobClick startWithAppkey:推送的方法为UMessage sta ...
- mysql防止误删除的方法
为了防止在更新和删除的时候,没有写where条件而对全部数据进行操作,mysql提供了一个参数来防止此情况的发生 需要在启动mysql的时候,增加参数--i-am-a-dummy含义是我是新手,或者使 ...
- [转]Extjs中的迭代方法
原文地址:http://www.veryhuo.com/a/view/36701.html EXTJS 有很多的迭代方法,例如,你也许已知道的Ext.each,但还有另外一些不为人知且很有用的方法.首 ...