| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:这道题的答案的思路,求大神解答
只看楼主 加入收藏
Mr丶小宇
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-12-29
结帖率:0
收藏
已结贴  问题点数:10 回复次数:6 
这道题的答案的思路,求大神解答
若第一个printf语句输出的是194,则第二个输出的结果是
void main()
{
  int a[]={1,2,3,4,5,6,7,8,9,0};
  printf("%x\n",a);
  printf("%x\n",a+9);
}


答案:  1a6
2016-12-29 00:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:3 
int 地址级别运算:a+1此时对应的十进制加4,意思是+4个字节的意思(视编译环境,其中一种编译环境下每个int占用4个字节),a+9输出数等于移动了36个字节,化为%x的16进制,194(16)+36(16)=1a6;

虽然感觉自己没有说得透彻,但大概意思就是这样~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-29 00:42
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:3 
16位编译的吧
2016-12-29 15:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:3 
就是求 0x194 + 9*sizeof(int)
如果sizeof(int)等于8,那么结果等于 0x1dc
如果sizeof(int)等于4,那么结果等于 0x1b8
如果sizeof(int)等于2,那么结果等于 0x1a6
2016-12-29 15:46
strongmore
Rank: 2
等 级:论坛游民
威 望:1
帖 子:16
专家分:29
注 册:2016-12-22
收藏
得分:3 
回复 4楼 rjsp
给力,应该是和编译器有关的,用vc2008试了一下,结果是1B8
2016-12-29 17:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
原来我还算错了9后面不是根0而是根a啊,感觉基础不够扎实被题目坑了,难怪感觉这么怪~上面应该是int为占用两字节的情况下的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-29 18:22
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
16位编译器
char            1个字节
char*           2个字节
short int       2个字节
int:           2个字节
unsigned int    2个字节
float           4个字节
double          8个字节
long            4个字节
long long       8个字节
unsigned long   4个字节

32位编译器
char            1个字节
char*           4个字节
short int       2个字节
int             4个字节
unsigned int    4个字节
float           4个字节
double          8个字节
long            4个字节
long long       8个字节
unsigned long   4个字节

64位编译器
char            1个字节
char*           8个字节
short int       2个字节
int             4个字节
unsigned int    4个字节
float           4个字节
double          8个字节
long            8个字节
long long       8个字节
unsigned long   8个字节
2016-12-30 20:15
快速回复:这道题的答案的思路,求大神解答
数据加载中...
 
   



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

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