首页 > 解决方案 > 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)将始终为真,但它确实成功执行了代码并给出了最终结果,这是“假的”。我在在线编译器上尝试了相同的代码,在这里,在线编译器给出了没有任何警告的结果。

这有什么原因吗?

标签: cvisual-studio-code

解决方案


您已定义c为 a char,这是signed char大多数编译器默认设置的 a 。在普通系统上a 可以取的最大值signed char是 127。这总是小于 200,IDE 会告诉您这个事实。

注意:头文件“limits.h”定义了标准类型的最小值和最大值。有趣的值是在你的情况下CHAR_MAX等于SCHAR_MAX

IDE 的警告可能与编译器的警告不同,因为它们是不同的野兽。有些比其他的“更聪明”,但是,不产生警告并不意味着构造是正确的。


推荐阅读