也許,我們寫起**來隨手就是定義乙個int 或者char型的資料。
我們有沒有想過這個資料到底是有符號還是無符號呢,它到底需要乙個符號嗎,會溢位嗎?
比如最簡單的兩行**
char ch = 0x90;
printf("%02x", ch);
你期待什麼輸出結果, 是90嗎?
但是結果可能不是你想的
得出結果是ffffff90,到底是為什麼呢?
char型在我的平台上預設是signed char,也就是有符號的, 那麼0x90就表示乙個負值了,也就是-0x70
那麼這個值,用「%02x」 列印出來是多少呢
就是ffffff90(注意計算機中用補碼表示)。
這顯然不是我們需要的。
當以unsigned char ch = 0x90;
結果就同我們預期的一樣了。
今天想把linux下的正文段打出來看一下,結果就做了個從0x80480000開始的列印程式,結果並不是每行輸出32個位元組(
我的程式中是以「%02x」列印的,迴圈32次)
所以,以後在寫**的時候,一定要注意,型別太重要了,看似沒問題,其實到處是問題。
好像看過一本書上講,看乙個人的**寫的怎麼樣,就看看他會不會在變數前註明變數符號,會不會在有的引數
前加上必要的const。這是後話了。
類值類與類指標類
類值類 行為像值的 class a a const a a ps new string a.ps i a.i 每個類物件有自己的乙份資源拷貝 a operator const a rhs a private string ps int i 一種優化拷貝賦值運算子的方法 copy and swap c...
巢狀類 匿名類 密封類
巢狀類 在c 中可以將乙個類定義在另乙個類的內部,外部的叫外部類,內部的巢狀類 namespace 27 set public void hello 巢狀類 public class web webname,weburl class program 匿名類 如果某個類的例項物件只會使用到一次,可以使...
點類,圓類,圓柱類
print?copyright c 2012,煙台大學計算機學院 all rights reserved.檔名稱 text.cpp 作 者 胡穎 完成日期 2013年5月20日 版 本 號 v1.0 輸入描述 無 問題描述 1 先建立乙個point 點 類,包含資料成員x,y 座標點 2 以poin...