首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

short长度的有关问题,应该如何做

2013-12-26 
short长度的问题,应该怎么做?cha str[256] 12dkflskdjflksjdflsdjfsdfsf//我要取数据的前两个字节,而

short长度的问题,应该怎么做?

cha str[256] = "12dkflskdjflksjdflsdjfsdfsf";
//我要取数据的前两个字节,而且保证这两个字节是short类型的数据,下面这句大多数时候是正确的。
short s = *(short*)str;
//但有人说short不一定是两个字节,请问应该怎么做?
//WORD能保证是两个字节吗?
//double能保证是8个字节吗?

[解决办法]
标准似乎规定short就是两个字节啊,没有规定的是int
[解决办法]
1、目前来看,short基本上是16位的,以后不保证;
2、用wchar_t比较合适,它一定是两个字节。

引用:
cha str[256] = "12dkflskdjflksjdflsdjfsdfsf";
//我要取数据的前两个字节,而且保证这两个字节是short类型的数据,下面这句大多数时候是正确的。
short s = *(short*)str;
//但有人说short不一定是两个字节,请问应该怎么做?
//WORD能保证是两个字节吗?
//double能保证是8个字节吗?

[解决办法]
不同的平台不同的编译器对数据类型定义的大小都是有区别的,如果在开发中对精度要求很高的话,可以事先检测你要用的类型是占几个字节
[解决办法]
请问 turingo,wchar_t不一定是二个字节吧,因为有些unicode编码的中文占用三个字节或4个字节。
wchar_t仅代表是宽字符,不知道说得对不对。
[解决办法]
请随便谁举一个sizeof(short)不是2的实际例子。
[解决办法]
引用:
cha str[256] = "12dkflskdjflksjdflsdjfsdfsf";
//我要取数据的前两个字节,而且保证这两个字节是short类型的数据,下面这句大多数时候是正确的。
short s = *(short*)str;
//但有人说short不一定是两个字节,请问应该怎么做?
//WORD能保证是两个字节吗?
//double能保证是8个字节吗?


请你先澄清一个问题,当short不是两字节时,你想怎么做?
[解决办法]
引用:
Quote: 引用:

请随便谁举一个sizeof(short)不是2的实际例子。

short能保证在绝大多数操作系统中是两个字节吗?

http://bbs.csdn.net/topics/250076957参考这个帖子,和编译器有关,但是规定short不少于16位
[解决办法]
cha str[256] = "12dkflskdjflksjdflsdjfsdfsf";
short s = *(short*)str;
assert(s==0x3231);//小端内存
assert(s==0x3132);//大端内存

热点排行