bug来源
定义了map<char, float>mp,插入值:mp['T']=101.0,在遍历mp输出的时候,使用了printf,如下:
printf("%s:%f\n", it->first, it->second);
结果无法输出,报错。
原因
printf在根据%s输出时,将给定的值作为字符串的首地址,然后逐个字节输出直至碰到’\0'。如果给定的值是不是一个字符串的地址,而是字符、数字的话,就会将字符或数字的值作为将打印字符串的首地址,打印,显然,这些随意的值作为地址的话,打印其中的值就会引起莫名其妙的错误了。
上面对应%s的it->first就是char类型的字符,故会出错。

本文介绍了一个关于使用printf函数输出map<char,float>类型数据时遇到的问题及原因分析。当尝试输出map中char类型的key时,由于printf期望接收字符串而非单一字符,导致输出错误。
2320

被折叠的 条评论
为什么被折叠?



