gpt4 book ai didi

c++ - 如何将 double 转换为 unsigned char?

转载 作者:行者123 更新时间:2023-11-30 00:52:37 30 4
gpt4 key购买 nike

我正在寻找使用 C++ 将 double vector 更改为无符号字符。为了确保它有效,我写道:

unsigned char x = 0;
double y = 4.6;
x = (unsigned char) y;
printf("%d", y);
cout << endl << "the char of 4.6 is: " << x;
getchar();

但不是 char 等于 4 或 5 我得到一个巨大的数字,如 1717986918或带有 cout 的菱形符号。

我认为这是因为它将 4.6 解释为“4.6”,但有没有办法保存它,使其变成一个接近相等值的无符号字符?

最佳答案

diamond symbol with cout

(unsigned char)4.6被截断为 4 .

但是当你cout一个char它打印相应的字符(例如 cout << char(65) 将打印 A )。如果你想打印你的 char那么您需要先将其转换为更宽的整数类型,例如:

double y = 4.6;
char x = y; // x == 4
cout << (int)x; // prints "4"
// ^^^^^

I get a huge number like 1717986918

问题出在你的printf上,与您提供的参数(%d = signed integer)相比,您使用了错误的格式说明符(char)。但是您已经知道了,我只是在完善我的答案。 ;)

同样,您可能想先施放它:

printf("%d", (int)x);

关于c++ - 如何将 double 转换为 unsigned char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665918/

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