int 正負相乘

2021-08-17 05:14:49 字數 647 閱讀 5438

unsigned int   s_value;   

if(s_value >= 0xffff)

s_value = 65535 - s_value + 1 ;

flag = -1;

測得的s_value為65535,進入if判斷後,發現s_value的值不變。

一看才發現我設定的資料型別為unsigned int,改為long int就可以啦!

當int正負相乘的時候,也需要特別注意資料型別是否是unsigned~

uint和int相乘,如果int為負,則相乘的結果非常大 。

unsigned int leftval = 1;

int   rightval = -1;

float result = leftval * rightval ;

the result is : 4.29497e + 009   .  並不是你想要的「-1」結果。

但是如果改為:

int leftval = 1;

int rightval = -1;

float result = leftval * rightval;

the result is : -1    . 得到你想要的-1的結果。

程式設計的時候要當心這種情況,特別是由於此,而引起的bug .

int整數相乘溢位

我們計算一天中的微秒數 long microsperday 24 60 60 1000 1000 正確結果應為 86400000000 system.out.println microsperday 實際上為 500654080問題在於計算過程中溢位了。這個計算式完全是以int運算來執行的,並且只有...

演算法思路 高精度乘法(大整數與int相乘)

這裡選擇相對簡單的int型整數和大整數相乘,來考慮其演算法的思路 按照小學算術的知識,兩個數相乘,可以拆開看成乙個數固定,另乙個數從個位開始,依次和這個數相乘 然後沒左移一位,相應的結果也左移一位,最後相加。其實硬體實現加法,也是基於這個最基本的原理 所以,在演算法的實現上就可以這麼來考慮 比如 7...

正負演算法生成圓

正負法是利用平面曲線將平面劃分成正負區域,對當前點產生的圓函式進行符號判別,利用負反饋調整以決定下乙個點的產生來直接生成圓弧。一 正負畫圓演算法描述 設要顯示圓的圓心在原點 0,0 半徑為r,初始點的座標為 0,r 順時針生成八分之一圓,令 f x,y x2 y2 r2 則圓的方程為 f x,y 0...