为了我自己的爱,我无法弄清楚这段 C 代码背后的逻辑是什么。
假设下面应该打印出 unsigned char x 的二进制表示,我们只允许填写空白。
void print_binary(unsigned char x) {
int b = 128;
while (__________________) {
if (b <= x) {
x -= b;
printf("1");
} else
printf("0");
______________________;
}
}
当然,我可以通过简单地忽略上面的行来玩这个程序。但是,我的印象是,这并不是真正的做事方式(它更像是一种黑客行为)。
我的意思是现在,第一个条件检查 128 是否 <= 字符,但不是无符号字符,什么,255 字节?那么为什么它只在里面打印'1'。
也许我错过了一些非常明显的东西(不是真正的交流程序员),但这次逻辑并没有深入到我的脑海中。
谁能指出我正确的方向?如果你能在不完全说出答案的情况下给我一个线索,那就太棒了。