• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

C语言基础(6)

发布: 2008-6-04 15:07 | 作者: 不详 | 来源: 虾盟教程基地 | 查看: 45次 | 进入软件测试论坛讨论

领测软件测试网


  
  我们来仔细分析一下哪些是逻辑量,哪些是逻辑值。

  要表达一件事情是否成立是这样描述的:“如果他来了,这件事情一定能成功”。用程序语句描述就是 if(a!=0)在这个语句里用变量a来表示他来与不来这件事,变量的值为1说明他来了,为0就是不来。在C语言中,一般不写成这样(如果一定要写成if(a!=0),别人一看你的程序就知道你是编程菜鸟),而是写成 if(a)。括号里面的变量a就是逻辑量。当该逻辑量的逻辑值为1时,if表达式为真,这时可以执行if 后的的程序语句。当该逻辑量的逻辑值为0时,if表达式为假,就不能执行if后面的程序语句。可以看出,if表达式能否成立是要看“逻辑量”最后的“逻值值”是否为1来判断的。

  什么是逻辑值--逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值。逻辑值只能是“0”和“1”这二个数。“1”表示逻辑真(成立);“0”表示逻辑假(不成立)。

  一切非“0”的逻辑量其逻辑值都为真。正确理解这句话很重要。例:if(-1),这一句可以这样来分析--首先“-1”是一个非“0”的逻辑量,它的逻辑值为“1”,那么这个if语句就成为 if(1),这个if表达式成立。

  思考:下面的式子中,哪个语句不被执行
  
  int a=0,b=10; if(a) {b++;a++}  a+=10; if(b) {a=10;b=-10;} if(b)a=0;

  C语言中进行逻辑运算时要注意的问题:
  
  例1:
  
  现在要判断一个变量的值是否在12到30之间,很自然想到了这样一个表达式:
  scanf("%d",&a);
  if(12<a<30)     /*这样的写法对吗*/
  printf("%d".a);
   
  把这样的语句放在程序里编译一下,没有什么不正常的,编译通过。
  
  但是在运行的时候就会出问题。下面仔细分析一下if语句的运行过程:
  
  表达式12<a<30中首先进行12<a的判断,如果a>12则为真,否则为假。设a的值为14,些时表达式结果为逻辑真,那么整个表达式if(12<a<30)成为if(1<30)(注意这个新的表达式中的1是12<a的逻辑值),这时问题就出现了,可以看到当变量a的值大于12的时候总有1<30,所以后面的<30这个关系表达式是多余的了。另外假设a的值小于12也会出现这样的情况。由些看来这样写法肯定是错的。
  
  正确的写法应该是:
  if((12<a)&&(a<30))  /*如果变量a的值大于12并且小于30*/
  这样不但编译通过,运行结果也是对的了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网