晕死,为什么右移运算后字节数全变为了4?

oarer 2011-07-30 04:13:28
因为一个问题:“为什么汉字右移8位后,不等于0”
char *p;
if((p[0]>>8)==0)printf("不是汉字");
照说即使汉字机内码每个字节最高位为1,但是每个字节右移8位后都最高位溢出被废弃了啊!



printf("%d\n",sizeof('a'>>0));
printf("%d\n",sizeof('a'>>1));
printf("%d\n",sizeof('a'>>2));
全是4




...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwer_boo 2011-07-30
  • 打赏
  • 举报
回复
就是啊,汉字两个字节存放的.
AnYidan 2011-07-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hua_yang 的回复:]
汉字占2个字节
[/Quote]
++
taodm 2011-07-30
  • 打赏
  • 举报
回复
1 楼主试过printf("%d\n",sizeof('a'));么?
2 楼主听说过运算时类型自动提升么?
pro_or_gram 2011-07-30
  • 打赏
  • 举报
回复
是不是考虑 用 wchar 类型, 也就是宽字符,
一个汉字用一个字节存放是不行的,需要2个字节

希望没答非所问。。
無_1024 2011-07-30
  • 打赏
  • 举报
回复


#include <iostream>
#include <cstdlib>

using namespace std;


int main()
{
printf("%d\n",'a' >> 8);
unsigned char p[3] = "我";
printf("%d\n",p[0] >> 8 );
return 0;
}
//不能用char数组 因为char有一个符号位是不参与移位的 用unsigned就可以了
//不要用sizeof 这是球类型长度的
無_1024 2011-07-30
  • 打赏
  • 举报
回复
搞错地方了
sizeof求出的是类型长度
左移的时候移位的地方是要补0的
無_1024 2011-07-30
  • 打赏
  • 举报
回复

#include <iostream>
#include <cstdlib>

using namespace std;

void Sort1( int array[], int size)
{
int i,j;
int temp;
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)//从0开始相当于交换了两次 先世由大到小然后又是交换了一次
{
if (array[i] <array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for( i = 0;i < size; i ++ )
{
printf("%d ",array[i]);
}
}
void Sort2( int array[] , int size )
{
int i,j;
int temp;
for (i = 0; i < size; i++)
{
for (j = i; j < size; j++)
{
if (array[i] <array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
for( i = 0;i < size; i ++ )
{
printf("%d ",array[i]);
}
}
int main()
{
int i = 0;
int j = 0;
int temp;
int size;
int array1[] = {1,2,5,4,1,56,78,49,15,21,55};
size = sizeof(array1) / sizeof(int);
printf("有小到大:\n");
Sort1(array1,size);
printf("\n有大到小:\n");
Sort2(array1,size);
return 0;
}
hua_yang 2011-07-30
  • 打赏
  • 举报
回复
汉字占2个字节
至善者善之敌 2011-07-30
  • 打赏
  • 举报
回复
放你的完整代码!

69,382

社区成员

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

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