關於指標的問題(pf《4 關於指標的一個問題( pf

2023-02-20 00:25:19 字數 864 閱讀 3425

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.這是由你的資料型...