2013-09-27 35 views
0

16位溢出我都必須使用該腳本添加數字:如何檢測與CCS

for(i=1; i<1000 ;i++) 
sum=sum+i; 

便會溢出32768,之後將變爲-32768,因爲它不能超過16位的限制。

我想用int來計數溢出c。

感謝

回答

1

您可以檢查是否總和>總和+我

+1

這隻適用於無符號類型。對於簽名類型,溢出的結果是未定義的。有些編譯器使用這些知識總是在y已知是正數時將'x + y> x'優化爲真。 http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html#signed_overflow – Art

+0

這很有道理。也許最好檢查一下'INT_MAX - sum jhnesk