【发布时间】:2022-08-22 04:08:00
【问题描述】:
#include <iostream>
using namespace std;
template <typename T, typename E, typename R>
R multiply(T x, E y, R r) {
return static_cast<typeof(r)>(x * y);
}
int main() {
double x = multiply(6, 80, uint8_t());
cout << x << endl;
return 0;
}
嘿,下面的代码输出是 224,但如果 6*80 = 480,这怎么可能。后续问题是“我怎样才能写得更好”?
-
uint8_t的取值范围为 0…255。您不能使用uint8_t表示超出该范围的任何内容。 -
注:
assert((480 % 256) == 224) -
你能解释一下为什么吗?不仅像 224 的公式
-
您是在问为什么不能将值 480 存储在 8 位整数中?您是在问为什么 480 的最低 8 位产生值 234?
-
你的意思是为什么8位只能代表0..255?
标签: c++