为什么从int转为unsigned int编译不会报警告解决方案
为什么从int转为unsigned int编译不会报警告在vc2005里,下面的代码在编译的时候不会报警告。C/C++ code#inc
为什么从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, 就会报警了。