今天说一下 C和C++ 的if 条件语句。

在实际编程中,会经常有逻辑判断,比如,输入的数值参数中,如果是奇数,输出This is uneven. 如果是偶数,输出 This is even.

我们在C中这么来写:

 int main()
{
int x;
printf("Please input a number x=");
scanf("%d", &x);
if (x % == )
printf("This is even\n");
else
printf("This is uneven\n");
}

第6行 使用 if 判断,如果 % 2 等于0,说明是偶数。

第8行,else 和第6行的 if 配对,不满足 %2 等于0,说明是偶数。

这里有个题外的基础点, "%" 是模运算,取余数的意思。

1. if 条件使用 () 封装

2. 如果条件语句后只有一句代码,可以不用{} 封装,如果有多条语句,需要使用 {} 来封装。

3. 如果有多种可能,需要使用 else if 后接条件。

接下来,我们要对 if 条件升级。如果输入的数字是偶数,并且小于10,输出This is even less than 10

如果输入数字是奇数并且小于20,输出This is uneven less than 20

否则,输入 Other situation.

代码如下:

 int main()
{
int x;
printf("Please input a number x=");
scanf("%d", &x);
if (x < && x % == )
printf("This is even less than 10\n");
else if (x < && x % != )
printf("This is uneven less than 20\n");
else
printf("Other situation\n");
}

1. 多个条件在一起判断,要求都满足的时候,使用 && 连接,如果满足一个即可,使用 || 连接。

2. 如果是 &&, 第一个条件求值为false,第二个表达式不再执行

3. 如果是 ||, 第一个条件求值为true,第二个表达式不再执行

以上特性被称为短路求值(short evaluation). Visual Basic 不属于短路求值语言。

举个例子,

if (x >  && x++)

以上代码中,如果 x 是下于10 的值,x++ 这句语句不会被执行

if (x >  || ++x == )

以上代码在 x 等于2时,表达式求值为真,会执行 if 分支的语句。

短路求值的应用非常广泛,灵活使用短路求值的特性,能提高程序效率。

第二个例子中,如果 条件语句需要调用别的函数计算,

if (fun1(x) && fun2(x))

如果 fun2 的计算逻辑比 fun1 简单,那么强烈建议把它写为

if (fun2(x) && fun1(x))

如果 fun2的结果返回为 false 时, fun1 不再被调用。这样程序执行效率会更高。

特别是有对指针变量的判断时

if (p != NULL && fun1(p))

如果 fun1 函数的作者没有对空指针的判断,将以上的顺序调换会引起错误。

最新文章

  1. 解决Ubuntu Kylin 1610安装ANSYS17.2的NVIDIA显卡驱动问题
  2. JS控制,返回上一页之后强行刷新一次
  3. 我对uml类图关系的理解
  4. sublime text 3 常用快捷键 、常用插件
  5. 仿哔哩哔哩应用客户端Android版源码项目
  6. zabbix监控windows主机网卡流量
  7. (转)android Fragments详解四:管理fragment
  8. Solr中初学Demo
  9. iOS动画详解(一)
  10. 关于微软RDLC报表打印时文字拉伸问题(Windows server 2003 sp2)
  11. norflash移植及uboot 保存环境变量实验
  12. Windows Phone 8 - Runtime Location API - 1
  13. JavaGUI版本销售管理系统
  14. eclipse点击包(package)时报错,安装hibernate后点击包报错org/eclipse/jpt/common/utility/exception/ExceptionHandler
  15. WPF 10天修炼 第一天- 入门
  16. VMware Workstation Pro 安装win7系统
  17. Python中对文件和目录的操作
  18. python+selenium,实现带有验证码的自动化登录功能
  19. 2.html基础标签:无序+有序+自定义列表
  20. 【Beta阶段】第十次Scrum Meeting!!!

热门文章

  1. T-SQL, Part II: IMAGE/TEXT Insert
  2. Java代码自动生成,生成前端vue+后端controller、service、dao代码,根据表名自动生成增删改查功能
  3. python--几种快速排序的实现以及运行时间比较
  4. gcc悄无声色将静态函数内联了
  5. HashMap的源码学习以及性能分析
  6. C# - VS2019 WinFrm应用程序开发报表 - ReportViewer控件初涉
  7. node后台初始配置(2)
  8. Java工作流系统-驰骋BPM工作流 引擎的工作模式
  9. CentOS7中安装MariaDB
  10. TensorBoard:可视化学习