gpt4 book ai didi

c++ - 是否可以从 unsigned char 数据类型函数向主函数返回一个整数?

转载 作者:行者123 更新时间:2023-11-27 22:48:46 26 4
gpt4 key购买 nike

我有这个 unsigned char sumBinaryFigure 函数,它计算 unsigned long long 数的二进制表示形式的数字总和。当我从主函数调用此函数时,对于 unsigned long long 它应该返回一个整数(或其他数字数据类型),尽管该函数的数据类型是 unsigned char。是否可以?我尝试了函数重载,但没有用。如果这听起来很荒谬,那不是我的错。

unsigned char sumBinaryFigure(unsigned long long number)
{
unsigned int S = 0;

while (number)
{
S += number % 2;
number /= 2;
}

return S;
}

最佳答案

When I call this function from the main function, for an unsigned long long it should return a integer although the data type of the function is unsigned char. Is it possible?

是的。这个问题并不荒谬,C 类型只是令人困惑。 unsigned charint 都表示整数。

您的代码是正确的。


unsigned char 是 1 字节数据类型。可以用来表示一个字母,也可以用来表示一个数字。

下面的语句是等价的。

unsigned char ch = 'A';
unsigned char ch = 65;

无论您将 unsigned char 用作字符还是整数,机器都不会关心。

char 不一定包含字符。它还代表小数字

sumBinaryFigure 的已发布实现返回一个 0-255 范围内的数字,这没有错。因为 long long 几乎肯定小于 256 位,所以您不必担心 unsigned char 不够大。


如果我可以建议对您的程序进行一项更改以减少混淆,请更改此行

unsigned int S = 0;  

对于这个...

unsigned char S = 0;

附录

为了清楚起见,请考虑以下代码。

int main (void) {
char ch_num = 65; // ch_num is the byte 0100 0001
char ch_char = 'A'; // ch_char is the byte 0100 0001

printf ("%d\n", ch_num); // Prints 65
printf ("%d\n", ch_char); // Prints 65

printf ("%c\n", ch_num); // Prints A
printf ("%c\n", ch_char); // Prints A
}

char 是一个字节。它是一个位序列,除了我们强加给它的内容之外没有任何意义。

该字节可以解释为数字或字符,但这取决于程序员。 %c 格式说明符表示“将其解释为字符。%d 格式说明符表示“将其解释为数字”。

是整数还是字符是由输出函数决定的,而不是数据类型。

关于c++ - 是否可以从 unsigned char 数据类型函数向主函数返回一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009438/

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