#include<stdio.h> int main() { char c; while ((c=getchar())!='?') putchar(--c); return 0; }


当输入Y?N?时,为什么输出的是X
没错啊,c=getchar()只能取到第一个字符,不管你一行输入多少。所以c='Y'茄枝,--c就颤枣敏变成了岩扒X。所以每次只能输入一个字符,输入Y出X,输入N出M,输入?退出
putchar 里输出的是--c 即先自减1 在带入蚂消银表达式 你输入'Y' 减一后 当然变成'X'了。。'N'减一变为'M'。坑定桥迹不会输出X的 你再去试闷宴下。。肯能你没保存好
你输入Y后,执行了--C操作,手含--C就是对ASCII码裂禅进肆薯尘行减1,Y的ASCII码减1就是X;N输出的是M,不是X我执行过了。
第一搜好个读入的字符是y
所以c
==
y
这个--c就是x
所以putchar(--c)输出的就是x
下一个读取的字符是?
但是?世穗铅不满足while循环的条件
所以while不再执行
后面的族缺字符也不再读取