C/C++错误集锦(VS2015):比较字符的条件语句提示:warning C4047: “<”:“int”与“char [2]”的间接级别不同,能编译通过,但是在运行后比较结果不正确。

原文链接:http://www.juzicode.com/cpp-error-vs2015-compare-char-condition-warning-c4047/

错误提示:

比较字符的条件语句提示:warning C4047: “<”:“int”与“char [2]”的间接级别不同,能编译通过,但是在运行后比较结果不正确。

#include "stdio.h"
//VX:桔子code; juzicode.com
int main(void)
{
    char ch;
    printf("请输入字符:");
    scanf(" %c", &ch);
    if (ch<"A" || ch>"Z") {
        printf("输入的不是大写字符\n");
    }
    return 0;
}

输入大写字母X,却提示不是大写字母:

错误原因:

1、定义的ch为char字符型变量,但是在if语句里面,ch是和包含了单个字符A和单个字符Z的字符串做比较,所以编译有告警,运行结果不正确。

解决方法:

1、修改比较语句,使用单引号包含的字符A和Z:

#include "stdio.h"
//VX:桔子code; juzicode.com
int main(void)
{
    char ch;
    printf("请输入字符:");
    scanf(" %c", &ch);
    //if (ch<"A" || ch>"Z") {
    if (ch<'A' || ch>'Z') {
        printf("输入的不是大写字符\n");
    }
    return 0;
}

如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注