经典面试题(二)

xiaoxiao2021-02-28  120

第三题:

下面代码printf打印的结果是多少?

#include <stdio.h> int main() { int n = 9999; int nCount = 0; while (n) { nCount++; n = n & (n - 1); } printf("%d\n", nCount); return 0; }

运行结果:

PS:仔细看那个while循环里面的操作,其实它在完成一件事情,就是求n转换为二进制之后1的数目,9999转换为二进制位0010 0111 0000 1111,可以清楚的看到有8个1,最后结果为8。

第四题: 下面代码printf打印的a和x值分别是多少?

#include <stdio.h> int main() { int a, x; for (a = 0, x = 0; a <= 1 && !x++; a++) { a++; } printf("a=%d\n", a); printf("x=%d\n", x); return 0; }

运行结果:

PS:对于这个题目了解for循环的执行顺序,然后就是!x++,先执行!x=1此处并不改变x的值,然后执行的x++把x的值改成1。

转载请注明原文地址: https://www.6miu.com/read-58336.html

最新回复(0)