1203081549 发表于 2022-11-17 19:05:57

大佬帮忙看看

#include <stdio.h>
//#include <math.h>
//#include <stalib.h>

void main()
{
    char ch1,ch2;
    int n1,n2;
    ch1=getchar();
    ch2=getchar();
    n1=ch1-'0';
    n2=n1*10+(ch2-'0');
    printf("%d\n",n2);
   
   
    }
输入12
为什么输出也是12
求运算逻辑

jhq999 发表于 2022-11-17 20:33:57

n1=‘1’-'0'=1
n2=n1*10+('2'-'0')=10+2=12

jackz007 发表于 2022-11-17 20:56:45

      是你键入的是字符 '1' 和 '2' 而输出的是整数 12 具体逻辑如下:
n1 = ch1 - '0' = '1' - '0' = 1
n2 = n1 * 10 + ch2 - '0' = 1 * 10 + '2' - '0' = 10 + 2 = 12

jackz007 发表于 2022-11-17 20:57:17

本帖最后由 jackz007 于 2022-11-17 20:59 编辑

      从表面上看,你键入了 12,于是,又输出了 12,好像一切都是那么自然合理,而实际上却不然,你键入的是字符 '1' 和 '2' ,而输出的却是整数 12,具体逻辑如下:
n1 = ch1 - '0' = '1' - '0' = 1
n2 = n1 * 10 + ch2 - '0' = 1 * 10 + '2' - '0' = 10 + 2 = 12
页: [1]
查看完整版本: 大佬帮忙看看