斯劳123 发表于 2021-6-20 23:40:00

该代码有何问题?

请观察以下代码:
#include <stdio.h>

int main()
{
    printf("请输入:");
    int a=scanf("%d",&a);
    char b,c,d,e;
    b="A";
    c="B";
    d="C";
    e="D";
    if(a >= 10)
    {
      printf("%c",b);
    }
    else if(7 < a <10)
    {
      printf("%c",c);
    }
    else if(4 < a <= 7)
    {
      printf("%c",d);
    }
    else if(0 <= a <= 4)
    {
      printf("%c",d);
    }
    return 0;
}
存在何问题

wp231957 发表于 2021-6-21 06:24:19

else if(7 < a <10)问题所在,含下面几个类似语句

Hoiste 发表于 2021-6-21 10:09:10

本帖最后由 Hoiste 于 2021-6-21 10:11 编辑

7 < a <10这里,C里面的比较运算符不能这么连用,可能有些地方不会报错,但也不会有输出,要实现这种思路需要用到与运算(&&),正确的表达是:
7 < a && a < 10

夏三笙 发表于 2021-6-21 11:37:01

0<=a<=4不能连用,要分开a>=0&&a<=4

Gacy 发表于 2021-6-21 12:22:31

小于小于号谁叫你这么用的{:10_266:}连我这个小菜鸡都看得出{:10_266:}

斯劳123 发表于 2021-6-21 13:33:06

Thank you{:10_254:}

斯劳123 发表于 2021-6-21 13:34:41

Gacy 发表于 2021-6-21 12:22
小于小于号谁叫你这么用的连我这个小菜鸡都看得出

菜鸡咋了,有何干系
{:10_243:}

万千只cnm 发表于 2021-6-21 14:24:26

不能连续比较
因为比较操作符的结果是个值(真或假
else if(7 < a <10)先执行前面    判断7 <a 是否为真
然而    1or0   永远小于 10

连帅帅 发表于 2021-6-21 15:06:04

斯劳123 发表于 2021-6-21 13:34
菜鸡咋了,有何干系

{:10_256:}{:10_256:}{:10_256:}

zy990106 发表于 2021-6-21 19:24:32

7 < a <10c语言不支持这用的 你要用逻辑与符号(&&),else if   建议直接使用else

Gacy 发表于 2021-6-21 21:26:27

斯劳123 发表于 2021-6-21 13:34
菜鸡咋了,有何干系

{:10_254:}{:10_254:}呜呜呜

斯劳123 发表于 2021-6-22 09:36:43

我找到问题所在
不单单只有这一点
还有一个问题
int a=scanf("%d",&a);要改为
int a;
scanf("%d",&a);
页: [1]
查看完整版本: 该代码有何问题?