今天在程式中遇到了int型別指標與char型別指標相互轉換問題,初看執行結果非常的不了解其具體的運作過程,通過查閱相關資料,並在程式中逐步除錯,最終搞清楚了這個問題,不多說,直接看下面程式**。
int main()
{
unsigned val=5;
val=(val<<24)|val;
cout<
其執行結果如下圖:
看上面列印結果:
第一行列印出val的值;
第二行列印出val的十六進製制的值
重點最後一行列印出5 0 0 5
從上面的輸出結果有點了解其執行過程了吧,具體解釋如下:
例: int a=12;
int *p=&a; //假設 &a為0x1234
char *pc=(char *)(&a);
由於int佔4位元組,故int型別指標p的管轄範圍為從p起始的4個位元組範圍,同理char型別指標pc的管轄範圍為從pc起始的1位元組範圍。
執行pc = (char*)(&a)後,pc也指向0x1234位址,只是pc的為char型的,所以它只能管轄1個位元組的範圍,故*pc實際上是把p管轄的4個位元組下的第乙個位元組取出來。
這下理解上述列印的具體過程了吧:
t(這裡為unsigned char型別指標)也指向val的位址,只是列印的時候一次只取val原位址下的乙個位元組,上述例子為5,依次類推,所以出現上述列印結果。
cdx 2014.4.28 22:23
java環境下char型別轉為int型別
char型別轉換為int型別 char a 1 int b int a 此時,輸出b得到的是字元 1 的ascii編碼49,其他數字甚至是字母也一樣,按此類方法輸出的都只會是ascii編碼,當然如果不強制型別轉換,直接寫作 int b a 編譯也不會出錯,不過輸出的依舊是ascii編碼。如果想直接輸...
c語言中char型別轉int型別
剛才做北郵2010年網研上機題的時候,遇到了char型和int型相互轉化的問題,這裡進行一下總結。今後,可能會多次更新部落格,因為半年做了很多總結,但是都是儲存在word文件上了,現在開始慢慢向csdn部落格轉移。1 char型數字轉換為int型,例如 char a 123 printf d n a...
如何按INT型別操作CHAR型別陣列
這是學習指標的過程中遇到的乙個問題的記錄。因為c 指標指向具體的記憶體位址,開始以為按照記憶體位址的加減就可以進行任意記憶體資料區域的操作,實際測試的時候發現,定義的指標有不同的型別,比如 int p 定義的是乙個整數型指標。p 1 指向的是下乙個整型數,也就是記憶體位址加4 32位系統 不是記憶體...