short长度的有关问题,应该如何做
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);//大端内存