c - VS Code 中的比较警告
问题描述
#include <stdio.h>
int main()
{
char c='w';
if((c>110 && c>120)&&(c<120 && c<200))
printf("true");
else
printf("false");
return 0;
}
这是我的代码。代码确实给出了输出,但是 vscode 给了我一个警告,即字符与常量的比较(如 200,它专门显示仅针对 200)将始终为真,但它确实成功执行了代码并给出了最终结果,这是“假的”。我在在线编译器上尝试了相同的代码,在这里,在线编译器给出了没有任何警告的结果。
这有什么原因吗?
解决方案
您已定义c
为 a char
,这是signed char
大多数编译器默认设置的 a 。在普通系统上a 可以取的最大值signed char
是 127。这总是小于 200,IDE 会告诉您这个事实。
注意:头文件“limits.h”定义了标准类型的最小值和最大值。有趣的值是在你的情况下CHAR_MAX
等于SCHAR_MAX
。
IDE 的警告可能与编译器的警告不同,因为它们是不同的野兽。有些比其他的“更聪明”,但是,不产生警告并不意味着构造是正确的。
推荐阅读
- android - 尝试从外部源旁加载 APK 时出现“未安装应用程序”错误
- python - 删除熊猫中特定数据帧的时间序列数据中的滞后/差距
- firebase - Firebase 的免费服务是否不如付费服务快?
- reactjs - onClick 带有 react-three-fiber 的外部链接
- amazon-web-services - AWS Codepipeline 中的非阻塞失败步骤
- reactjs - Mapbox GL:如何在地图顶部显示边界框
- r - 神经网络拟合但结果给出错误的列数
- .net - 如何通过 GPO 禁用 .NET 3.5
- python - Pandas + 不按索引删除特定行
- static - Godot/GdScript 如何从静态函数实例化一个类?