Blog·Tanky WooABOUTRSS

memset()的错误认识

24 Jul 2010
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

汗,以前一直以为可以

 int a[10];
memset(a, 1, sizeof(a));

今天才发现,这是一个天大的错误,自己以前居然没有意识到~~~ 事情追溯到今天下午做ACM题,想全部置1,结果发现输出的是怪数字。纳闷之下百度一查,石破天惊~~~ 这里把原因说下: 先看了MSDN: 我不明白为何在给出的格式中有int出现,但是Remarks明确指出了: _ Sets the first count characters of dest to the character c_

其实这都不是重点,重点就是理解为何是这样: ** memset是一个字节一个字节的设置.**

****把一个int的每个字节都设置为1,也就是0x01010101,十进制就是16843009 而在全部置0或者-1就没事。这是因为: 设置为0 就是0x00000000 设置-1就是FF,所以每个字节都置为-1就是0xFFFFFFFF,还是-1。 这也是为何可以置0和置1的原因。

如果想全部置1,只需用for即可。