测评代码以下:code
#include <cstdio> #include <string> int main(void) { // 多了或者少了格式化参数 ::printf("%d%d%d\n", int(1), int(2)); ::printf("%d%d%d\n", int(1), int(2), int(3), int(4)); // 格式化类型不正确 ::printf("%s\n", std::string("test")); ::printf("%d\n", std::string("test")); ::printf("%d\n", float(12.34)); ::printf("%f\n", int(1)); // 越界 int a[10] = {0}; a[10] = 10; int b[10] = {0}; for (int i; i < 11; ++i) { b[i] = 10; } for (int i = 0; i < 11; ++i) { b[i] = 10; } // 字符串比较的典型错误 bool bl; bl = ("123" == std::string("123").c_str()); // 此处错误没有找到 if (bl) { } // Cppcheck的一个bug std::string str("123"); ::printf("%d", ("123"==str ? int(1) : int(2))); // 此处误报 ::system("pause"); return 0; }
结果图字符串
有误报,有的错误没找到,但瑕不掩瑜。string