陷阱學習2

2021-06-27 21:47:04 字數 501 閱讀 9260

一.臨時變數溢位

#include

using namespace std;

long multiply(int m,int n)

int main()

int main()

{cout<

二.整除的精度問題

計算出來的結果不是期待的值

bug分析:

1/6,1和6都是整數,屬於整除運算,得到的結果應該是整數,整除運算會自動忽略掉小數部分,所以得到的值為0,將0賦值給result,

所以得到的值是0

正確**:

result=1.0/6.0;

2 詞法 陷阱

某些編譯器允許巢狀注釋。請寫乙個程式測試,要求 無論是對允許巢狀注釋的編譯器,還是對不允許巢狀注釋的編譯器,該程式都能正常通過編譯,但是這兩者情況下執行的結果卻不相同。include includeusing namespace std int main void 不允許巢狀 已測試 bufsize...

《C陷阱與缺陷》 2

4 整數溢位 1 無符號數 0 不可能發生溢位,當它超過範圍時,從0開始重新計數 有符號數 0 可能發生溢位,並且 溢位 的結果不固定 2 當乙個無符號數和有符號數相加的時候,有符號數自動轉化為無符號數 3 判斷溢位 方法一 強制轉換成無符號數 if unsigned a unsigned b in...

C陷阱與缺陷(小結2)

語法分析 語句 宣告的語法細節 1.理解函式宣告 任何c變數的宣告都由兩部分組成 型別以及一組類似表示式的宣告符 如 float h 其中型別為float,宣告符為 h 整個宣告表示 h 為乙個函式指標,h所指向函式的返回值為浮點型。由乙個給定型別的變數的宣告得到該型別的型別轉換符 將變數名和宣告部...