我的程序中用了ado,在编译时程序总会出现这种警告错误:......\debug\msado15.tlh(403) : warning C4146: unary minus operator applied to unsigned type, result still unsigned下面是出错的定位行在msado15.tlh文件中
......
enum RecordCreateOptionsEnum
{
    adCreateCollection = 8192,
    adCreateStructDoc = -2147483648,-->出错行
    adCreateNonCollection = 0,
    adOpenIfExists = 33554432,
    adCreateOverwrite = 67108864,
    adFailIfNotExists = -1
};
...... 请问为什么?

解决方案 »

  1.   

    这个负值超过了该类型(应该是int)所能表达的负值的极限所以它变成了一个正数,跟正数太大变成负数是一个道理
      

  2.   

    这不是错误可能上面的这个值是一些flag or(|)在一起得到的
    而作者想用enum来表示它
    枚举缺省是一个有符号的int,所以这个值超过了INT的范围但是不影响使用的,因为内存中,它是多少就是多少,不会变化。
      

  3.   

    我知道不影响使用,但每次编译看到这么多warning就烦,不知有没有解决的方法
      

  4.   

    试试看   #pragma warning(disable : 4146)放到文件头