我有一个带字段的缓冲区结构
char inc_factor;
这是字符数组中要递增的字节数。问题是它必须能够保存最大 255 的值。显然,最简单的解决方案是将其更改为 unsigned char,但我无法更改提供的结构定义。函数:
Buffer * b_create(short init_capacity, char inc_factor, char o_mode)
接收这些参数并返回一个指向缓冲区的指针。我想知道如何才能将数字 255 放入带符号的字符中。
最佳答案
可以转换类型:
unsigned char n = inc_factor;
有符号到无符号的转换定义明确,可以满足您的需求,因为所有三种 char 类型都需要具有相同的宽度。
您可能需要在调用端(或在您的结构中存储char
时)小心并执行类似f(n - UCHAR_MAX )
左右(同样,如果这是负数并且 char
是无符号的,一切都很好)。
关于字符到无符号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837206/