因为你直接求了'$'这个常量,它存放在常量区,计算的时候只传了地址过来,结果当然是4,如果你计算p=sizeof(sign),那就等于1了。
输出的是n而不是c。所以你什么都不输入只打个回车就输出0;若输入了字符,因为字符不是回车,所以还得反回去执行do后的n++,使n变成了1,然后c接收了回车就退出了……