1樓:匿名使用者
將第一個函式中的指令
if ((*pf<<4)>32 && (*pf<<4)<100)修改為
if ((*pf<<4)>32 && (*pf<<4)<=100)不明白樓主的意思。請問樓主的編譯環境是什麼?
在vc++下,按上述修改之後,兩個程式能夠得到相同的結果。
確實如此,使用
if ((*pf<<4)>32 && (*pf<<4)<=100)與if ((char)(*pf<<4)>32 && (char)(*pf<<4)<=100)
產生的結果是不完全相同的。原因在於,進行字元型別強制轉換後,字元ascii值移位的結果(這個結果很可能已經不是字元了)可能會發生損失。比如,當*pf為字元「#」時,其ascii值為35,於是*pf<<4的值為560,再進行字元型別強制轉換之後值為48,因此上述第一個判斷語句不成立,而第二個判斷語句則成立。
2樓:匿名使用者
if ((*pf<<4)>32 && (*pf<<4)<100)這一句不對
在判斷 (*pf<<4)>32 時 *pf 已經被處理一次了到 (*pf<<4)<100) 時 又被處理一次相當於 <<8 了
然後你又
*pf+=*pf<<4;
相當於 <<12
3樓:匿名使用者
改為這樣就可以了
if ((char)(*pf<<4)>32 && (char)(*pf<<4)<100)
。。(*pf<<4)<100。。。。為了和100比較,*pf取出的值被轉化為整型的了。(char)100也不行。。??
4樓:匿名使用者
好像沒看出什麼問題,除了<=100
關於c 指標的問題
一 int p a 換成int p p a 就出錯了,這是為什麼?答 int p意思是定義一個指標p。記住,這以後p代表的是一個指標了。因此下一句應該寫為p a。二 另外就int p a而言,a返回的不是a的地址嗎,那 p不就等於a的地址了?答 是p等於a的地址。順便說一句,此後的 p中的 號是間接...
關於二維陣列指標的問題
其實這是c在實現多維陣列時的魔術而已,實際上a就是一個12個int的資料區。你在寫a 1 2 時編譯器實際上知道這個陣列一行是4個元素,所以計算它的地址為a 1 4 2,即a 1 2 就是 a 1 4 2 另一方面,編譯器允許使用形如a 1 這樣的表述,由於它知道a是一個定義為a 3 4 的陣列,所...
c語言問題求教 關於指標變數問題
你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...