滴水逆向联盟

标题: 5>4>3 为什么不成立 [打印本页]

作者: 夺命书生    时间: 2014-11-7 15:08
标题: 5>4>3 为什么不成立
问题阐述:
    5>4>3 为什么不成立? 这可能吗?

专家解答:
     这个结论在数学中是成立的,但是在C语言中是不成立的。
     这是一个C语言关系表达式的值的问题。

     如果给出几个选项你会选哪个?
    A.true   B. false    C. 1    D.0
     正确答案应该是D 。

问题分析:

     C语言中没有专门的逻辑值,true false  ,一个关系表达式或逻辑表达式的执行结果成立时用 1 表示,
     不成立时用0表示,但不是只有 0 和 1 可以表示逻辑值,任何数都可以用来表示逻辑值,
      整数可以,小数可以,正数可以,负数也可以,除0以外的数值都表示为 true
      甚至字符也可以表示逻辑的真值。
      5>4>3 应该怎样理解?
      这里有一个运算符的结合性问题,C语言的运算符有两个特点,即优先级和结合性。
      C语言规定,所有算术运算符优先级高于所有关系运算符,所有关系运算符高于所有逻辑运算符 “&&”  或  “||”

      通过以下两个实例来理解,运算符的优先级和结合性的概念。
  1. 3+2>6
  2. a>=0 && a<=100
复制代码
     以上两个表达式正确的执行顺序是: (3+2)>6      (a>=0) && (a<=100)

      结合性只运用在优先级相同的情况下,除赋值(=)之外所有的双目运算符都是从左至右结合的。
      如: 100/10/2  应该理解为: (100/10)/2
      
      所以,5>4>3  不成立,应该理解为:(5>4)>3


      在看看一下两个表达式的值
       1.  3+2>5      2.   3+(2>5)
       表达式1的结果为逻辑值 0 ,表达式2的结果为数值3 。


        再看: !!a  一定等于a吗?
        结论:不一定,只有a等于 0 或 1 时成立,其他值均不成立。






作者: 夺命书生    时间: 2014-11-7 21:35
这群小子,看帖都不回太不厚道了。
作者: OneTime    时间: 2014-11-8 23:25
他们太不厚道了~




欢迎光临 滴水逆向联盟 (http://www.dtdebug.com/) Powered by Discuz! X3.2