为什么一个是127一个是255

img

img

因为char是-128到127,循环255次

k 是 8位,
while(k) 这条语句是 k != 0 就循环,循环加 255 次就成 0 退出循环。
while(k>0) 是1-127 循环,128就是负数了,就退出循环了

看看char类型的二进制表示:
0111 1111 + 1 = 1000 0000,变成负数,用补码,= -128
1111 1111 + 1 = 1 0000 0000, 高位溢出, = 0

然后对照你的题目分析。
PS:最直观的做法是自己调试运行一下。