Chinaunix首页 | 论坛 | 博客
  • 博客访问: 916752
  • 博文数量: 177
  • 博客积分: 8613
  • 博客等级: 中将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-12 04:16
文章分类
文章存档

2012年(12)

2011年(24)

2010年(24)

2009年(75)

2008年(42)

我的朋友

分类: C/C++

2009-07-13 23:19:23

    对于表达式它的值:
i=10;
i = i-- - --i * (i = -3) * i++ + ++i;
的结果,和《一站式》解释的一样,结果都是未定义的,一站式上主要关注的是side effect,《c和指针》上讲解的更好,看了之后我是真的理解了:
一句话,优先级高的操作符先执行,优先级相同的,根据结合性决定执行顺序,但是表达式的求值顺序是不确定的,编译器做的只是不违背优先级和结合性而已。

ok,快11点半了,先来两个小菜,呵呵:

[root@bjxdurs235 20090713]# cat -n float.c
     1  #include
     2  int main(void)
     3  {
     4          printf("%f\n",(float)( 25 / 10 ));
     5  }
[root@bjxdurs235 20090713]# ./float
2.000000
这个小程序说明了强制类型转换。

[root@bjxdurs235 20090713]# cat -n logic.c
     1  #include
     2  int main(void)
     3  {
     4          int a = 20;
     5          if ( 1 <= a <= 10 )
     6                  printf("In range\n");
     7          else
     8                  printf("Out of range\n");
     9  }
[root@bjxdurs235 20090713]# ./logic
In range
这个小程序说明了关系运算符的求值顺序,从左到右进行,比较简单。
阅读(398) | 评论(0) | 转发(0) |
0

上一篇:拷贝字符串

下一篇:实现简单的位数组

给主人留下些什么吧!~~