2014-05-22 34 views
-3

这是这样用C在C浮点unsigned int类型

unsigned int i=-1; 
print("%u",i); 

输出为1的所有补井 但是当我使用

print("%u",-1*i);//displays the answer 1 i guess it uses i as signed int 
print("%u",-2.2*i);//displays 2575826944 

的任何一个,请帮助

+0

将第一行重新键入为print(“%u”,((unsigned)( - 1))* i);'然后你仍然会得到1结果真的和c选择无关结果签字。这是因为这就是模块化算法的工作原理:(a-1)^ 2 mod a = a^2 - 2a + 1 mod a = 1 mod a –

回答

3

u转换说明符printf需要unsigned int参数,但您传递的是double的论点为-2.2*i的类型为double。它调用未定义的行为。使用f说明符打印double参数。

+0

是的,他应该试试%f –

相关问题