TA的每日心情 | 怒 2014-12-12 07:01 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
逆向联盟VIP会员
   
- 积分
- 344
|
问题阐述:
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)
结合性只运用在优先级相同的情况下,除赋值(=)之外所有的双目运算符都是从左至右结合的。
如: 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 时成立,其他值均不成立。
|
|