求救c语言大佬

2025-03-12 17:43:34
推荐回答(1个)
回答1:

几个关键点

  • 首先,这个格式就很难受,不方便分析,重新整理:

int main()
{
char ch1 = 'a', ch2 = 'B', ch3 = 'E';
if(ch1 > ch2)
    if(ch2 > ch3)
        ch3++;
    else
        --ch3;
printf("ch3 = %c\n", ch3);
return 0;
}
  • 字符的比较比的是其ACSII表中的数值,'a' = 97,'B' = 66, 'E' = 69

    可以简单记小写>大写,z>a;

  • else属于上一个最接近的合法if;

  • ++表自增,--表自减,在字符前表示先自增/减再运算,字符后表运算后再自增/减,这里没有影响;

因此,结合起来逐个语句分析:

  • if(97 > 66),为真,执行其下语句if

  • if(66 > 69),为假,执行else语句

  • --'E':'E' - 1 = 'D'

因此最后输出ch3=D