因为char是-128到127,循环255次
k 是 8位,while(k) 这条语句是 k != 0 就循环,循环加 255 次就成 0 退出循环。while(k>0) 是1-127 循环,128就是负数了,就退出循环了
看看char类型的二进制表示:0111 1111 + 1 = 1000 0000,变成负数,用补码,= -1281111 1111 + 1 = 1 0000 0000, 高位溢出, = 0
然后对照你的题目分析。PS:最直观的做法是自己调试运行一下。