int 和char 轉化可能導致的錯誤

2021-08-26 01:45:07 字數 469 閱讀 5708

其實不一定是指int*,對於任何使用者自定義的結構體,在和char*轉化時可能帶來的問題:

(1) 訪問越界,導致結果錯誤

因為int是4個位元組,char*的位元組數不定,所以在將char*轉化為int*時,可能出現訪問越界問題,導致值出錯。

(2) 位元組對齊問題

#include using namespace std;

int main()

得到的結果是25185,這是因為字元a存在低位址,值為01100001,字元b存在高位址,值為01100010。

取*tmp時,要從儲存字元a的位址開始由低位址向高位址取4個位元組,於是*tmp的二進位制表示為0110001001100001,十進位制表示為25185

如果是復合資料型別,在將char*轉化為struct *時,同樣考慮位元組對齊帶來的問題。

java 把char 轉化為int

首先說明一下問題由於某個專案的需求需要使用到 int 的陣列,由於資料最初是 string 型別的,為了方便就先把 string 型別的資料轉化成了 char 可是專案需要的是 int 的資料,所以還得把 char 轉化成 int 在轉化的過程中 1,變成了49,2變成了 50.考慮了很久才忽然想起...

string和char 的轉化

問題 上次的問題還遇到了string型別和char 的轉化的問題 回答 因為string型別的變數 有乙個方法c str 可以直接的到const char 所以如果想得到const char 就可以直接用這個方法了,舉例如 string str1 eh1.txt const char temp st...

char與int等資料型別的強制轉化

1.首先char與int都分為signed與unsigned型別,預設情況下都是signed型別。2.從長位元組資料型別轉換為短位元組資料型別,會產生截斷 如從4位元組的int型別轉換成1個位元組的char型別,則取int資料的最低的乙個位元組,將這個位元組的資料賦給char型資料,且是有符號的,即...