关于C++流的一个问题

请问这个语句是什么意思?除了宏之外,我完全看不懂,拜托稍微说详细一点,谢谢了!#defineGETSTREAMSHORT(p)((unsignedchar)(p)[0]|... 请问这个语句是什么意思?除了宏之外,我完全看不懂,拜托稍微说详细一点,谢谢了!
#define GETSTREAMSHORT(p) ((unsigned char)(p)[0] | (unsigned char)(p)[1] << 8)
展开
 我来答
passion_wu128
2011-01-24 · TA获得超过1168个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:543万
展开全部
简单的说这个宏就是定义一个按位或运算,结果是取得数组p第一个元素的低位8字节的值.。
GETSTREAMSHORT 这个是宏命名,可以随便取什么名字。
(unsigned char)(p)[0] 这个是将(p)[0]转化为unsigned char类型。(就是取低位的8字节)
(unsigned char)(p)[1] << 8这个是先将(p)[1]转化为unsigned char类型,然后左移8位。这样得到的一个全是0的字节。
由于或运算右边全是0,所以或得结果就是(unsigned char)(p)[0];
给你举几种情况的例子:
(1):
char a[]={3,4,5} ;
GETSTREAMSHORT(p) 的结果就是3;
(2)
char a[]={-3,4,5};
GETSTREAMSHORT(p) 的结果就是253;(这是将char转化为unsigned char类型)
(3)
int a={258,4,5};
GETSTREAMSHORT(p) 的结果就是2;(只取257的低位8字节)
还有什么问题再交流;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式