看几个C语言经典笔试题。
有以下程序,如果 x 等于 254,则函数的返回值是多少?
int func(int x) { int countx = 0; while(x) { countx ++; x = x & (x - 1); } returncountx; }
看到这两行代码,应该形成条件反射,看似复杂, 实则是在计算 x 的二进制表示中 1 的个数,254 的二进制是这样的,一共有 7 个 1
第二个,经典的 define 和 typedef 的区别。
define 属于宏定义,预处理的时候替换,于是 a 和 b 变成了这样,a 是指针,b 是整数。typedef 声明的是一种类型,c 和 d 都属于 int_ptr 类型,就是 int * 类型,两个都属于指针。
执行下列语句后,变量 x 和 y 的值是多少?
y = 10; x = y++;
后置 ++ 的特点,语句执行完再赋值。x 还是 10,y 最后要加一,变成了11。
执行以下代码,程序的输出是?
int main() { for(int i = 0; i < 3; i++) { switch(i) { case 0: printf("%d",i); case 2: printf("%d",i); default: printf("%d",i); } } return 0; }
考察 switch 语句的基本语法,没有 break,程序会一直向下执行。i 等于 0,匹配到 case 0,输出0,因为没有 break,下面的两个 printf 都会被执行,又输出两个 0。i 等于 1,没有匹配,
执行最后的 default ,输出一个 1。i 等于 2,匹配到 case 2,输出 2, 同样因为没有 break,下面的 printf 也会输出 2。
执行以下代码,在32位系统中,程序的输出是?
void Func(char str_arg[2]) { int m = sizeof(str_arg); int n = strlen(str_arg); printf("%d ", m); printf("%d ",n); } intmain(void) { charstr[]="Hello"; Func(str); }
考察 strlen 和 sizeof 的用法。虽然形参看起来是个数组,但是对于编译器来说,一旦它作为参数,就是当作指针来处理。sizeof的结果是4,strlen 的结果是 5。
-
C语言
+关注
关注
180文章
7602浏览量
136357 -
程序
+关注
关注
116文章
3779浏览量
80894 -
代码
+关注
关注
30文章
4762浏览量
68408
原文标题:五个C语言笔试题,看看能做对几个?
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论