读书人

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

发布时间: 2013-12-26 00:35:35 作者: rapoo

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);//大端内存

读书人网 >C语言

热点推荐