//int n = -2147483648; // 错误 1 error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 int i = 128; cout << "int" << endl; cout << '+' << i << " : "; cout << bitset<32>(i) << endl; cout << -i << " : "; cout << bitset<32>(-i) << endl...
一元减号应用于无符号值,且结果为无符号,也就是 2147483648。 结果的无符号类型可能会导致意外行为。 如果在比较中使用了结果,则可以使用无符号比较,例如,当另一个操作数是int时。 可以使用<limits.h>的INT_MIN或LLONG_MIN,或者 C++ 等效项<climits>,避免出现 C4146。 这些值具有有符号类型。 /sdl(启用附加安...
system("pause");return0; } 测试用例里用到的数据是-2147483648,然后报错error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 这是因为int的最小值是-2147483648,最大值是2147483647,但是我们不能用int n = -2147483648。因为编译器(VS2013)在看到int n = -2147483648;的时候,首先判断2147483648 >...
本部分列出的文章描述了 Microsoft C/C++ 编译器警告消息 C4000 - C4199。 重要 Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 ...
C/C++ error C4146: 一元负运算符应用于无符号类型,结果仍为无符号类型 - 由于编译器SDL安全检查认为这一操作(通常是为无符号整形取负的操作)无效而产生的。
使用vs2015编译代码时报错:errorC4146:一元负运算符应用于无符号类型,结果仍为无符号类型 原因: 由于编译器SDL安全检查认为这一操作(通常是为无符号整形取负的操作)无效而产生的...2147483647,那么会将INT优化为unsigned int类型, SDL就可能认为我们的INT有可能取负了之后还是一样的,毕竟是unsigned 类型,因此提示错...
C/C++ error 无法从“float”转换为“void *” 一.无法从“float”转换为“void * 在文章《数据类型/变量类型》中有做介绍,float属于浮点数;int 和 float 转换请参考《int 和 float 相互转换》,void* 和 float 转换如下: /***/ //@Author:猿说编程 //@Blog(个人博客地址): www.codersrc.com //@Fil...
编译器警告(等级 2)C4146 一元负运算符应用于无符号类型,结果仍为无符号类型 无符号类型只能保留非负值,因此一元减号 (否定) 在应用于无符号类型时通常没有意义。 操作数和结果都是非负数。 备注 表示负整数文本时,值前面的-将解析为一元反数运算符。 编译器在分析数值后应用运算符。 如果数值适合无符号整数...
本部分列出的文章描述了 Microsoft C/C++ 编译器警告消息 C4000 - C4199。 重要 Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 ...
报错的意思:未知的类型名:‘bool’ main.c:Infunction‘main’: main.c:6:4: error: unknown type name ‘bool’ 6|bool x =1; |^~~~ main.c:11:4: error: unknown type name ‘bool’ 11|bool y = *(bool*)p; |^~~~ main.c:11:15: error: ‘bool’undeclared(first useinthisfunction)...