部落格8 小心 「臨時變數」 的溢位

2021-09-18 07:04:36 字數 823 閱讀 6823

內容:記錄一下臨時變數的溢

有的溢位沒注意看,就忘記去提防了,往往出現在讓你琢磨不透的現象。比如,***的情況:

疑問:明明用long來存放了,但是還是溢位了是什麼原因呢:

答案:是因為a*b是要被放到乙個臨時變數,然後才轉到long的,但是這個臨時變數是int型別的,所以出現了臨時變數的溢位。

解決方法:

這樣先將a,b轉化為long型別的就不會出現溢位的情況了,前提是你是64位的系統,且在你系統上int是4位元組,但是long int是8位元組的,如果你是32位的系統,那麼你long並沒有辦法存下這個溢位的值,那麼還是會溢位的,這時候怎麼解決呢?-------------估計你只能用字串解決 「大數相乘」 的辦法了!

32位vs測試:

64位linux測試:

結果:可以看到32位下,long是放不下的,所以還是會溢位,64位long放得下,所以不會溢位。

C C 中的臨時變數

說到臨時變數,我們大家也許都挺熟悉,但是我自己對臨時變數的理解卻一直存在乙個誤區。通常情況下,我會把為了做某一件事情而臨時建立的乙個變數叫做臨時變數。比如說在交換兩個變數的值時,通常我們會建立第三個變數來達到我們最終的目的,而我們稱之為 臨時變數 然而,大師scott meyers告訴我們,事實不是...

臨時表變數的用法

declare sql varchar 5000 begin set sql select id from address book set sql insert into table sql set sql declare table table uid int identity 1,1 id v...

臨時變數 區域性變數,return的效率

如果函式返回值是乙個物件,要考慮 return 語句的效率。例如 return string s1 s2 這是臨時物件的語法,表示 建立乙個臨時物件並返回它 不要以為它與 先建立乙個區域性物件 temp 並返回它的結果 是等價的,如 string temp s1 s2 return temp 實質不...