| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1385 人关注过本帖
标题:无聊,跟各位说说 & ++ -- 运算符
取消只看楼主 加入收藏
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
结帖率:100%
收藏
 问题点数:0 回复次数:3 
无聊,跟各位说说 & ++ -- 运算符
呵呵,
首先是
& 这个运算符是一个取地址运算符,
其实正确的定义指针,是这样的,int &p;
int a=7;
 a=a&(a-1)
这里的&(a-1)是a的的二进减一。7(0111)减一就是 0110 就是6
如果要输出地址的话,一般是,  printf("address  %x\n",a) 这个是十六进制的,感觉是 0x06h;
我说的这个运算符和后面二个也有关系。
++i和i++
这二个一个在前一个在后,,
先说 ++i 就是先把i加1,其实 是先取的i的地址,然后在加1 ; i++这个是先取得地址, 把加1放在寄存器中,然后就加1;
--和前面一样,呵呵,

[[italic] 本帖最后由 missiyou 于 2007-12-10 00:14 编辑 [/italic]]
搜索更多相关主题的帖子: 运算符 
2007-12-09 22:18
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
这个是,int a=a&(a-1)
意思就是取a的地址就是&(a-1)其实是 &(a)是(0111)然后在减去1这个1是二进制当中的1。然后在把这个取过地址而且地址也运算过了一个地址,这我认为,改变了,内存中存储的位置,然后在把它从重给a, 也就是相当于从新定义了a
也就想当,int *p=&a;
                   *p =5;那么a值也改变了,也就变成了5,
2007-12-09 22:49
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   printf("%s\n",argv[0]);//这个是你这个程序放在那;
  int a=7;
  a=a&(a-1);
  printf("is a=%d\n",a);
  printf("is a=%x\n",a);
  a=a&(a-1);
  printf("is a=%d\n",a);
  printf("is a=%x\n",a);
  a=a&(a-1);
  printf("is a=%d\n",a);
  printf("is a=%x\n",a);
  system("PAUSE");    
  return 0;
}

我说没问题,你不信,去试试

[[italic] 本帖最后由 missiyou 于 2007-12-10 00:29 编辑 [/italic]]
2007-12-10 00:09
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
,地址,真的不好懂,

[[italic] 本帖最后由 missiyou 于 2007-12-10 21:15 编辑 [/italic]]
2007-12-10 20:56
快速回复:无聊,跟各位说说 & ++ -- 运算符
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015596 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved