鍍金池/ 問答/C  C++/ 為什么memset()輸出這個?

為什么memset()輸出這個?

int main()
{

int ia1[50];
memset(ia1,5,50*sizeof(int));
cout<<ia1[10];

system("pause");
return 0;

}

clipboard.png??

回答
編輯回答
獨特范

只有0和-1才能這樣初始化吧

2017年2月17日 10:03
編輯回答
夢一場

因為memset是按字節(jié)的.
具體過程樓上說了, 稍微做點補充, 除了0, -1也是可以都置成-1

2018年3月17日 08:09
編輯回答
兔寶寶

因為你把每個字節(jié)設(shè)置成了 5,也就是二進制的 101。
ia1[10] 或任何一個 ia1[i] 都是 4 字節(jié)組成的整數(shù),int 占 4 字節(jié)。
所以 ia1[10] 即為 00000101 00000101 00000101 00000101(二進制)。
就等于 2^26 + 2^24 + 2^18 + 2^16 + 2^10 + 2^8 + 5,這里 x^y 表示 x 的 y 次方。
你用計算機摁一下,精確的等于 84215045!
教訓(xùn)是,memset 只該用來清空一片內(nèi)存,即永遠設(shè) 0。

2017年4月22日 18:37