您的位置:首页 > 其它

关于memset函数

2015-09-01 10:31 239 查看
今天突然发现memset的原理,如memset(p,0,sizeof(p)),这句话特别常见,讲所有的元素初始化为0,但是memset(p,1,sizeof(p)),却是将所有的元素初始化为16843009,以前也知道不能初始化为1,但是原因就不得而知了。那天研究别人代码,发现一句相当于是memset(p,243,sizeof(p))的语句,却是把整个数组赋值为-202116109,我十分不解。。本来想就算了的,但还是查一下百度。。。原来memset是将1个字节(8位数字)初始化为那个数,所以前面的问题都可以解释了,1的二进制是00000001,int有4个字节,所以初始化为所有的数初始化为00000001000000010000000100000001,也就是16843009。而243那个为什么出现负数呢?我顺便把在计算机中负数的表示方法又给复习一下,上课的时候根本就没注意。。一个数的二进制取反+1,就是这个数的负数,所以可以通过243,反推出那个数是-202116109,好神奇啊。。。而且244 242之类的都不如243小,CF上的大神这样 写是防别人CHA他吗。。。。以后可以这样初始化一个数组。

PS: 从0开始前255位。大于等于256的,会从1再开始循环回去,也就是取二进制的后8位。

0 0

1 16843009

2 33686018

3 50529027

4 67372036

5 84215045

6 101058054

7 117901063

8 134744072

9 151587081

10 168430090

11 185273099

12 202116108

13 218959117

14 235802126

15 252645135

16 269488144

17 286331153

18 303174162

19 320017171

20 336860180

21 353703189

22 370546198

23 387389207

24 404232216

25 421075225

26 437918234

27 454761243

28 471604252

29 488447261

30 505290270

31 522133279

32 538976288

33 555819297

34 572662306

35 589505315

36 606348324

37 623191333

38 640034342

39 656877351

40 673720360

41 690563369

42 707406378

43 724249387

44 741092396

45 757935405

46 774778414

47 791621423

48 808464432

49 825307441

50 842150450

51 858993459

52 875836468

53 892679477

54 909522486

55 926365495

56 943208504

57 960051513

58 976894522

59 993737531

60 1010580540

61 1027423549

62 1044266558

63 1061109567

64 1077952576

65 1094795585

66 1111638594

67 1128481603

68 1145324612

69 1162167621

70 1179010630

71 1195853639

72 1212696648

73 1229539657

74 1246382666

75 1263225675

76 1280068684

77 1296911693

78 1313754702

79 1330597711

80 1347440720

81 1364283729

82 1381126738

83 1397969747

84 1414812756

85 1431655765

86 1448498774

87 1465341783

88 1482184792

89 1499027801

90 1515870810

91 1532713819

92 1549556828

93 1566399837

94 1583242846

95 1600085855

96 1616928864

97 1633771873

98 1650614882

99 1667457891

100 1684300900

101 1701143909

102 1717986918

103 1734829927

104 1751672936

105 1768515945

106 1785358954

107 1802201963

108 1819044972

109 1835887981

110 1852730990

111 1869573999

112 1886417008

113 1903260017

114 1920103026

115 1936946035

116 1953789044

117 1970632053

118 1987475062

119 2004318071

120 2021161080

121 2038004089

122 2054847098

123 2071690107

124 2088533116

125 2105376125

126 2122219134

127 2139062143

128 -2139062144

129 -2122219135

130 -2105376126

131 -2088533117

132 -2071690108

133 -2054847099

134 -2038004090

135 -2021161081

136 -2004318072

137 -1987475063

138 -1970632054

139 -1953789045

140 -1936946036

141 -1920103027

142 -1903260018

143 -1886417009

144 -1869574000

145 -1852730991

146 -1835887982

147 -1819044973

148 -1802201964

149 -1785358955

150 -1768515946

151 -1751672937

152 -1734829928

153 -1717986919

154 -1701143910

155 -1684300901

156 -1667457892

157 -1650614883

158 -1633771874

159 -1616928865

160 -1600085856

161 -1583242847

162 -1566399838

163 -1549556829

164 -1532713820

165 -1515870811

166 -1499027802

167 -1482184793

168 -1465341784

169 -1448498775

170 -1431655766

171 -1414812757

172 -1397969748

173 -1381126739

174 -1364283730

175 -1347440721

176 -1330597712

177 -1313754703

178 -1296911694

179 -1280068685

180 -1263225676

181 -1246382667

182 -1229539658

183 -1212696649

184 -1195853640

185 -1179010631

186 -1162167622

187 -1145324613

188 -1128481604

189 -1111638595

190 -1094795586

191 -1077952577

192 -1061109568

193 -1044266559

194 -1027423550

195 -1010580541

196 -993737532

197 -976894523

198 -960051514

199 -943208505

200 -926365496

201 -909522487

202 -892679478

203 -875836469

204 -858993460

205 -842150451

206 -825307442

207 -808464433

208 -791621424

209 -774778415

210 -757935406

211 -741092397

212 -724249388

213 -707406379

214 -690563370

215 -673720361

216 -656877352

217 -640034343

218 -623191334

219 -606348325

220 -589505316

221 -572662307

222 -555819298

223 -538976289

224 -522133280

225 -505290271

226 -488447262

227 -471604253

228 -454761244

229 -437918235

230 -421075226

231 -404232217

232 -387389208

233 -370546199

234 -353703190

235 -336860181

236 -320017172

237 -303174163

238 -286331154

239 -269488145

240 -252645136

241 -235802127

242 -218959118

243 -202116109

244 -185273100

245 -168430091

246 -151587082

247 -134744073

248 -117901064

249 -101058055

250 -84215046

251 -67372037

252 -50529028

253 -33686019

254 -16843010

255 -1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: