2014-05-22 63 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 –

相關問題