为什么从int转为unsigned int编译不会报警告
在vc2005里,下面的代码在编译的时候不会报警告。
- C/C++ code
#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ int len = -10; char dest[20] = {0}; char src[] = "abc"; memcpy(dest, src, len); return 0;}如果int的值为负,转换成unsigned int,值就特别大了,容易造成栈溢出。
[解决办法]
编译器是否产生警告信息,可以设置级别的,你在项目属性中找找就看见了
[解决办法]
比较的时候才会给警告
[解决办法]
警告肯定不能100%发现代码问题。
C#的警告倒是多,不过也有他自己的问题。
[解决办法]
也不要太依赖编译器了!
有时候,编译器的优化,可能会导致很多不同结果...
[解决办法]
有个'oldnames.lib'问题,在C++中是UINT。
你把warnning level设为 4, 就会报警了。