9月20日笔试总结

当型循环

当型循环结构用在先判断某些条件是否为真,然后重复执行某一段代码的情况下。

补充:直到型循环

直白的说,直到型循环就是先执行循环体,再判断条件是否需要继续往下执行循环体。例如:do….while

常见的转义字符

  • \a 响铃(BEL)
  • \b 退格(BS)
  • \f 换页(FF)
  • \n 换行(LF)
  • \r 回车(CR)
  • \t 水平制表(HT)
  • \v 垂直制表(VT)
  • \ 反斜杠
  • \? 问号字符
  • \’ 单引号字符
  • \” 双引号字符
  • \0 空字符(NULL)

计算一个数中1的个数:

1
2
3
4
5
6
7
8
9
10
int fun(int x)
{
int count = 0;
while(x)
{
count++;
x = x & (x - 1);
}
return count;
}

补充:计算一个数中0的个数:

1
2
3
4
5
6
7
8
9
10
int fun(int x)
{
int count = 0;
while(x + 1)
{
count++;
x = x | (x + 1);
}
return count;
}

小端法的问题

1
2
3
4
5
6
7
假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?
#include <stdio.h>
int main(){
long long a = 1, b = 2, c = 3;
printf("%d %d %d\n", a, b, c);
return 0;
}

解析:

  • printf是一个库函数,c/c++中的函数参数从右向左入栈
  • 栈的生长方向为:高地址—>底地址
  • 小端模式是底地址存放底位数值
  • %d格式输出的是4字节的大小,而long long是8字节

由上述的四点,我们可以画出如下参数入栈的图:

image

由图可知,最后输出的结果为:

1 0 2