滴水逆向联盟
标题:
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语言规定,所有算术运算符优先级高于所有关系运算符,所有关系运算符高于所有逻辑运算符 “&&” 或 “||”
通过以下两个实例来理解,运算符的优先级和结合性的概念。
3+2>6
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