手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

逻辑运算符

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

一、逻辑运算符

C 语言提供了三个逻辑运算符

运算符 | 含义 | 学名 | 结合律
--------------------------------------------
&& | 并且 | 逻辑和 | 从左到右
--------------------------------------------
|| | 或 | 逻辑或 | 从左到右
--------------------------------------------
! | 非 | 逻辑非 | 从右到左
--------------------------------------------

下面我们通过一个简单的例子来学习这三个运算符。

/*--------------------------------------------------------------
| 作者: Antigloss @ http://stdcpp.cn @ 蚂蚁的 C/C 标准编程
|
| 功能: 演示 &&、|| 及 ! 的用法
-------------------------------------------------------------*/

#include <stdio.h>

int main(void)
{
int i_num;

printf("Please enter an integer: ");
scanf("%d", &i_num);

if ( !i_num ) /* 效果等同于 i_num == 0 */
{ /* 假如用户输入 0 */
printf("i_num got a value of zero.\n");
}
else if ( i_num >= 1 && i_num <= 9 )
{ /* 假如用户输入介于 1 到 9 之间(包括 1 和 9)*/
printf("i_num is between 1 and 9, inclusive.\n");
}
else if ( i_num < -9 || i_num > 9 )
{ /* 假如用户输入小于 -9 或大于 9 */
printf("i_num is less than -9 or greater than 9.\n");
}
else
{ /* 其他情况 */
printf("i_num is between -9 and -1, inclusive.\n");
}

return 0;
}

程式重点:

1. !i_num

假如 i_num 的值不为零,则 !i_num 为假;假如 i_num 的值为零,则 !i_num 为真。
也就是说,! 的作用是把真变为假,把假变成真。

2. i_num >= 1 && i_num <= 9

只有 i_num >= 1 和 i_num <= 9 同时为真,该表达式的值才为真。

3. 别以为 i_num >= 1 && i_num <= 9 能够像数学里那样写成 9 >= i_num >= 1 或
1 <= i_num <= 9。以 9 >= i_num >= 1 为例,由于关系运算符是从左到右进行结合的,
所以该表达式等同于 (9 >= i_num) >= 1。当 9 >= i_num 为真时,则该表达式为
1 >= 1,其值为真;当 9 >= i_num 为假时,则该表达式为 0 >= 1,其值为假。

4. i_num < -9 || i_num > 9

只要 i_num < -9 和 i_num > 9 当中有一个为真,该表达式的值就为真。

5. if else if ... else if ... else

也许您现在对 if else if ... else if ... else 这种用法仍然不太了解,觉得难以理解。
不用担心,其实很简单,上面的代码我们能够改写成:

if ( !i_num ) /* 效果等同于 i_num == 0 */
{ /* 假如用户输入 0 */
printf("i_num got a value of zero.\n");
}
else
{
if ( i_num >= 1 && i_num <= 9 )
{ /* 假如用户输入介于 1 到 9 之间(包括 1 和 9)*/
printf("i_num is between 1 and 9, inclusive.\n");
}
else
{
if ( i_num < -9 || i_num > 9 )
{ /* 假如用户输入小于 -9 或大于 9 */
printf("i_num is less than -9 or greater than 9.\n");
}
else
{ /* 其他情况 */
printf("i_num is between -9 and -1, inclusive.\n");
}
}
}

怎么样,是不是容易理解多了?但是,习惯上,我们会采用前一种写法。其实,假如您习惯了
前一种写法,会觉得前一种写法更容易理解。if else if ... else 的基本结构为:

if ( condition1 )
一条语句/复合语句
else if ( condition2 )
一条语句/复合语句
else if ( condition3 )
一条语句/复合语句
... ...
else if ( conditionN )
一条语句/复合语句
else
一条语句/复合语句

其执行流程如下图所示:

从这个图中我们能够清楚地看出,当条件为假时,程式会跳到下一条 if 语句,直到条件成立
为止。当某个 if 语句的条件为真时,则执行其下的“一条语句/复合语句”,然后退出整个

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!