uint16
我想对一个浮点数进行异或,如下所示:
uint16_t a=20000;
double r,x,xo;
r=3.8;
xo=.1;
x=(int) r*xo*(1-xo);
c=a^x;
当我运行测试时,会发生以下错误:
invalid operand to binary ^
如何转换x
为 16 位的整数值?
uint16
我想对一个浮点数进行异或,如下所示:
uint16_t a=20000;
double r,x,xo;
r=3.8;
xo=.1;
x=(int) r*xo*(1-xo);
c=a^x;
当我运行测试时,会发生以下错误:
invalid operand to binary ^
如何转换x
为 16 位的整数值?
nesC 是 C 的扩展,因此您可以将浮点数转换为整数,就像在 C 中使用强制转换一样。例如:
(int)(x+0.5)
请注意,这有局限性,请在此处查看更多详细信息:http ://www.cs.tut.fi/~jkorpela/round.html
问题是这x
仍然是一个双重价值。演员阵容
x=(int) r*xo*(1-xo);
截断数字,但它仍然是一个双数。
要执行您想要的操作,您需要在 xor 之前声明x
或int
强制转换:
c=a^((int)x);