我想使用浮点数来生成uint16
的xor,如下所示:
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位的整数值?
答案 0 :(得分:0)
nesC是C的扩展,因此您可以将浮点数转换为整数,就像在C中一样,使用强制转换。 例如:
(int)(x+0.5)
请注意,这有一些限制,请在此处查看更多详细信息:http://www.cs.tut.fi/~jkorpela/round.html
答案 1 :(得分:0)
问题是x
仍然是双倍值。演员
x=(int) r*xo*(1-xo);
截断数字,但它仍然是一个双数。
要执行您想要的操作,您需要将x
声明为int
或在xor之前投射:
c=a^((int)x);