【问题标题】:A different situation in switch caseswitch case 中的另一种情况
【发布时间】:2021-01-09 17:42:04
【问题描述】:

我在 C 编程中使用 switch case 解决了一个简单的元音和辅音问题,但得到了不同的输出。程序直接访问switch的默认情况。可能是case无法识别条件。

条件是:

case 'a'||'e'||'i'||'o'||'u':
  printf("vowel");
  break;
default:
  printf("consonant");

【问题讨论】:

  • 因为这不是在 C 中完成大小写替代的方式。您的案例标签等于 (char)1,ASCII 中的字段分隔符。
  • @bipll:就是1;字符文字在 C 中具有 int 类型,而不是 char。无论如何,大小写标签都会转换为控制表达式的类型(switch 中的表达式)。此外,控制表达式受整数提升的影响,因此它至少是int,而不是char

标签: c


【解决方案1】:

case 'a'||'e'||'i'||'o'||'u': printf("vowel"); 也等价于case 1: printf("vowel");

(除'\0' 之外的所有字符文字都是真实的,因此case 表达式产生1,它在ASCII 中对应于一个名为start of heading 的不可打印字符,您不应该在文本文件中找到它.)

你需要的是:

case 'a': case 'e': case 'i': case 'o': case 'u': printf("vowel");

即(取决于你如何看待它)多个case 标签附加到同一个printf 语句或几个在它们之间隐含掉线的情况。

【讨论】:

    猜你喜欢
    • 2020-10-13
    • 2013-05-13
    • 2011-05-08
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多