【发布时间】:2014-04-03 15:48:08
【问题描述】:
我正在处理使用 uint8(1 字节宽的无符号整数)、uint16(2 字节宽的无符号整数)、uint32(4 字节宽的无符号整数)等类型的代码。
我的问题是:
-
uint8和char大小相同吗? -
uint16和int大小相同吗? -
uint32和long大小相同吗? -
uint64和double大小相同吗?
例如:
uint8 c[20];
这个大小不应该是20吗?
我在visual studio中写了一些代码:
#include <stdio.h>
#include <string.h>
typedef unsigned int uint32;
typedef unsigned int uint8;
int main()
{
double a = 1320.134;
uint32 b;
uint8 c[20];
b = (unsigned int)a;
c[3] = b;
printf("value is %d", c[3]);
return 1;
}
但是在调试模式下c的大小是50。这是为什么呢?
【问题讨论】:
-
应该是
typedef unsigned char uint8;,在中使用uint8_t、uint16_t、uint32_t。 -
sizeof c是 50?应该是20 * sizeof(unsigned int),不能是50。 -
如何将int转换成char得到char中的最终解??
-
代码示例与前面的文字相矛盾:它包含
typedef unsigned int uint32和typedef unsigned int uint8,非常混乱。请澄清。 -
请澄清“调试模式下c的大小为50”。 50 是否应该是十六进制数(即 80 十进制)?另外,它与代码有任何关系吗?
标签: c visual-studio