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

原文链接:http://www.juzicode.com/archives/4715

错误提示:

比较字符的条件语句提示: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”,欢迎后台留言撩我,我会尽我所能为你解惑

发表评论

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