各位大虾帮忙看看,关于字符指针的问题?

appletreecy 2008-07-03 01:33:51
char * string;
string ="iaha i love china.";
printf("%s\n",string);
printf("%x",string[0]);
printf("\n");

unsigned char digit;

digit=string[1]&0xf;

printf("%1x",digit);
printf("\n");

问题1:请问string[1]什么意思?
问题2:请问digit=string[1]&0xf;什么意思?

谢谢。
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
appletreecy 2008-07-03
  • 打赏
  • 举报
回复
还有一个问题,就是如果想把string[0]输出到屏幕上来,不知道到要怎么写printf。
K行天下 2008-07-03
  • 打赏
  • 举报
回复
digit=string[1]&0xf;
这是各位与运算,
屏蔽了string[1]的高四位
jy01807853 2008-07-03
  • 打赏
  • 举报
回复
[Quote]{还有一个问题,就是如果想把string[0]输出到屏幕上来,不知道到要怎么写printf。}
你要输出一个字符可以这样printf("%c", string[0]);
[/Quote]
jy01807853 2008-07-03
  • 打赏
  • 举报
回复

问题1:请问string[1]什么意思?
问题2:请问digit=string[1]&0xf;什么意思?
string[1]这个是按下标访问 访问到的是字母 a
他就相当与字符数组,
digit=string[1]&0xf;什么意思?
因为string[1]访问的是 字母a 它的
ASCII 十进制为97与十六进制的0xf 进行位的 & 运算
所以结果为1
eggqq007 2008-07-03
  • 打赏
  • 举报
回复
string[1]是取出字符串常量中的第二个字符,就是 a
digit=string[1]&0xf

而 ‘a’的ASCII码是97,用二进制表示呢就是1100001
0x的意思就是说后面输入的数是用16进制来表示的。
所以0xf换成十进制就是15,换成二进制就是1111

而中间的&表示进行与运算。
1100001
& 0001111
---------
0000001
就得到 1 了

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧