在C中转换多种不同的数据类型

时间:2015-01-25 19:58:29

标签: c casting unsigned-integer size-t

我是一名正在进行分配的学生,需要在C中使用不同的数据类型。我们的代码必须是可移植的,因此使用sizeof非常重要。我们还建议我们进行自己的转换,以便独立于编译器。我的问题是如何针对sizeof正确地转换多个数据类型,返回size_t这是一个无符号整数值?

下面看起来很奇怪,但我只是将字符转换为字节,因为它是在不同的架构上编译的,其中char可能大于/小于1个字节。

short amountOfBytes;
char b = 10;
amountOfBytes+=(short)((unsigned int)b*sizeof(char));

我这样做了吗?这是另一个例子:

short a, b = 200;
a = (short)(((unsigned int)b+1) * sizeof(char));

最后一个问题,通过size_t施放是更好的做法还是我应该坚持使用unsigned int?

1 个答案:

答案 0 :(得分:0)

您的代码可以调用签名类型溢出,这不是已定义的操作。因此代码是错误的。

同样sizeof(char)定义为1。然而,这并不意味着8位。请参阅CHAR_BIT