c - Switch Case 的工作方式不同

标签 c char switch-statement

考虑两个代码。尽管已将相同的值分配给 i ,但为什么它们给出不同的输出,“i”在两个代码中都是一个字符。

第一个代码--> (这里直接将值赋给i)

void main()
 {
  char i=3;

  clrscr();
  switch(i)
     {
      default : printf("\nHi..\n");
          break;
      case 1:printf("\na");
         break;
      case 2:printf("\nb\n");
        break;
      case 3:printf("\nc");
          break;
      }
  }

第二次使用 printf-scanf--->

void main()
 {
  char i;
  printf("ENTER i");
  scanf("%c",&i);
  clrscr();
  switch(i)
     {
      default : printf("\nHi..\n");
                break;
      case 1:printf("\n\na");
         break;
      case 2:printf("\nb\n");
        break;
      case 3:printf("\nc");
          break;
      }
 }

在第二个代码中,当我给出 3 作为输入时,我得到“Hi..”作为输出。是什么使这两个代码的工作方式不同..??

最佳答案

在您使用的第一个中

char i = 3

但是当你使用 scanf 时,你实际上使用的是:

char i = '3'

这两个包含不同的值

请参阅以下 ASCII http://www.asciitable.com/

关于c - Switch Case 的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17685519/

相关文章:

string - 具有 PWideChar 参数的函数仅采用第一个字符

C INPUT 开关盒

javascript - Switch 中的 indexOf

C: Cppcheck:可能的空点取消引用

c - 在内存中查找进程页面(linux-kernel)

java - 如何将负整数值转换为 char 数据类型

C - 在 for 循环中切换后的代码被忽略

c++ - C++ 的最小 XML 库?

c - C 中的返回类型

c++ - 删除字符指针数组