gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:38:46 25 4
gpt4 key购买 nike

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

下面看起来很奇怪,但我只是将字符转换为字节,以防它在不同的体系结构上编译,其中字符可能大于/小于 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?

最佳答案

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

此外,sizeof(char) 定义为1。但这并不意味着 8 位。请参阅CHAR_BIT

关于在 C 中转换多种不同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28140822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com