逻辑运算符的用法

作者在 2011-08-05 16:59:35 发布以下内容
/*
时间:2011年8月5日16:51:47
目的:测试逻辑运算符!、&&、||的用法和注意事项
*/

# include <stdio.h>

int main(void)
{
int i;
int k;

//!(非)的用法
k = !0;                    //逻辑中0被认为是假,而!0就是非假,所以是真
printf("%d\n",k);        //真显示为1

k = !1;                    //1是非0的数,所以是真,!1就是非真当然是假
printf("%d\n",k);        //假显示为0

k = !2;                    //这里注意一下,不是!0为1,!1为0这样的关系。例如:2也是非0的数,所以是真,那么!2当然也是假
printf("%d\n\n",k);        //既然是假,这里还是显示为0

//&&(与,并且)的用法
k = !0 && !0;            //真 && 真,结果还是真
printf("%d\n",k);

k = !0 && 0;            //真 && 假, 结果是假
printf("%d\n",k);

k = 0 && !0;            //假 && 真, 结果也是假
printf("%d\n",k);

k = 0 && 0;                //假 && 假, 结果还是假。
printf("%d\n",k);        //总结上面的结果,事实上表达式中只要出现假,结果就肯定为假,只有表达式中全是真的时候结果才是真

k = 3>2 && 2+3;            //语句中的0或!0可以由其他表达式替代,
printf("%d\n",k);        //这里由关系运算符组成的表达式3>2为真,而由算术运算符组成的表达式2+3结果是5而不是0,所以也为真,最后的结果为真

k = 3>2 && (i=0);                    //语句中也可以使用赋值表达式,当赋值表达式是0时,所以这个语句的结果是假的,但i被成功赋值为0
printf("k = %d, i = %d\n",k,i);

k = 3>2 && (i=5);                    //语句中也可以使用赋值表达式,赋值表达式不是0,这个语句的结果就为真了,而i也被成功赋值为5
printf("k = %d, i = %d\n",k,i);

k = 3<2 && (i=10);                    //这里有一个好玩的地方,当&&左边的表达式是假时,整个语句的结果当然为假,但i被赋值为多少呢?
printf("k = %d, i = %d\n\n",k,i);        //结果显示,i并没有被成功赋值为10,而是保留了之前的赋值5,也就是说&&左边为假时,就不执行右边的表达式了

//||(或)用法
k = !0 || !0;            //真 || 真,结果是真
printf("%d\n",k);

k = !0 || 0;            //真 || 假, 结果也是真
printf("%d\n",k);

k = 0 || !0;            //假 || 真, 结果还是真
printf("%d\n",k);

k = 0 || 0;                //假 || 假, 结果才是假。
printf("%d\n",k);        //只要||两边的表达式有真,结果就为真,只有||两边的表达式全为假结果才是假

k = 3>2 || (i=10);                    //这里也有同样的问题,||左边的表达式3>2为真,则语句为真的结果已经板上钉钉,则系统不再执行||右边的表达式
printf("k = %d, i = %d\n\n",k,i);        //所以这里把10赋值给i还是失败,i的值仍然是之前的5

return 0;
}

/*
在VC++6.0中的输出结果为
——————————————
1
0
0

1
0
0
0
1
k = 0, i = 0
k = 1, i = 5
k = 0, i = 5

1
1
1
0
k = 0, i = 0

Press any key to continue
——————————————
*/
郝斌视频笔记 | 阅读 1219 次
文章评论,共0条
游客请输入验证码
最新评论