几个关键点
首先,这个格式就很难受,不方便分析,重新整理:
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