#include #include int main()
return 0;
}
程式功能:初始化陣列元素為輸入值。
輸入:-1
預期輸出:
-1 -1
0 01 1
實際輸出:
-1 -1
0 016843009 16843009
原因:memset是按位元組賦值的,取變數a的後8位二進位制進行賦值。
1的二進位制是(00000000 00000000 00000000 00000001),取後8位(00000001),int型佔4個位元組,當初始化為1時,它把乙個int的每個位元組都設定為1,也就是0x01010101,二進位制是00000001 00000001 00000001 00000001,十進位制就是16843009。
之所以輸入0,-1時正確,純屬巧合。
0,二進位制是(00000000 00000000 00000000 00000000),取後8位(00000000),初始化後00000000 00000000 00000000 00000000結果是0
-1,負數在計算機中以補碼儲存,二進位制是(11111111 11111111 11111111 11111111),取後8位(11111111),則是11111111 11111111 11111111 11111111結果也是-1
總結:memset()只有在初始化-1,0時才會正確。想要初始化為其他值,我目前會做的就是diy了。。。
int a[11];
for(int i=0;ia[i]=1;
memset初始化陣列
memset初始化陣列 結構體也可初始化 不過我在此處並未對結構體初始化.memst按位元組進行初始化,可以選擇將陣列初始化為0或初始化為 1 include include include include include using namespace std int main include i...
memset函式初始化
對於絕大多數編譯器來講,char namekey 15 與memset namekey,0x0,sizeof namekey 或memset namekey,0 sizeof namekey 這三個是一樣的。但是有的編譯器,char namekey 15 只將namekey 0 給賦值為 0 其他成...
memset函式初始化
標頭檔案 incldue 靜態陣列 int num 10 memset num,0,sizeof num 初始化為 0 memset num,1 sizeof num 初始化為 1 memset num,0x3f sizeof num 初始化為無窮大 memset num,0x3f sizeof n...