Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5760560
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类:

2006-08-01 13:48:54

#include;
void main()
{
    char *ptr = "csdn";
    printf( "%c\n",*(ptr++) );
}

#include;
void main()
{
    int i = 10;
    i << 1;
    i >> 5;
    printf( "%d\n", i);
}

结果是什么,不许用编译器,看题后5秒钟内开始回答,还要说出原因.

第一个是c,ptr++是在语句执行完后才执行++操作的,有没有括号都一样。
第二个是10,单独的没有赋值的移位操作是不会改变原数大小的。
    如果改成i=i<<1;i=i>>5;的话,结果就是0了。

汗啊!第二个我竟然做错了,春到去移位。
阅读(948) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

enjoy_it2009-06-02 19:25:49

哈,我也做错了第二道。。。。 补充一点,移位运算符的优先级 相当低,建议在长语句中使用时习惯性的加上括号。我有一次就犯了这个错误 ,比如a + b<<5其实是(a+b)<<5

enjoy_it2009-06-02 19:25:49

哈,我也做错了第二道。。。。 补充一点,移位运算符的优先级 相当低,建议在长语句中使用时习惯性的加上括号。我有一次就犯了这个错误 ,比如a + b<<5其实是(a+b)<<5