Jeff的错题集(二):小朋友你是否有很多问号!

12 篇文章 0 订阅
12 篇文章 0 订阅

题一
如下语句通过算术运算和逻辑运算之后i和 j的结果是( )
复制代码
1
2
3
4
5
6
int i=0;
int j=0;
if((++i>0)||(++j>0))
{
//打印出i和j的值。
}

正确答案: D 你的答案: B (错误)
i=0;j=0
i=1;j=1
i=0;j=1
i=1;j=0
解答:短路特性

题二:

运行以下C语言代码,输出的结果是( )

#include <stdio.h>
int main()
{
char *str[3] ={“stra”, “strb”, “strc”};
char *p =str[0];
int i = 0;
while(i < 3)
{
printf("%s",p++);
i++;
}
return 0;
}

正确答案: C 你的答案: A (错误)
stra strb strc
s t r
stra tra ra
s s s

解答:1,p是char*类型,每次++,后移一位(char)
2,char *p=str[0]相当于char *p=“stra”,p先指向s,p++后,指向t
3,printf输出遇到空字符停止

题三:
数组ARR=[1,2,3,4,5],以下返回值为5的是( )
正确答案: B 你的答案: A (错误)
arr.push(1)
arr.pop()
arr.shift()
arr.unshift(1)

解答:
push() 在数组末尾添加元素,返回新数组长度,所以返回5
pop() 删除数组最后一位,返回所删除的元素,所以返回5
shift() 删除数组第一位,返回所删除的元素,所以返回1
unshift() 在数组开头添加元素,返回新数组长度,所以返回5

题四:
【单选】下面的程序会打印几个hello?
int main(void)
{
fork();
printf(“hello\n”);
fork();
printf(“hello\n”);
while(1);
return
}
正确答案: C 你的答案: A (错误)
2
4
6
8

解答:
Before the fork 只执行了一次。After the fork 执行了两次,
printf(“hello\n”);
fork();
printf(“hello\n”);
执行一次三个 hello ,在第一个fork后执行了两次,总共六次

题5:
关于static变量,请选择下面所有说法正确的内容。
正确答案: A B C 你的答案: A B D (错误)
若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度
若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度
设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题
静态全局变量过大,可那会导致堆栈溢出
解答:
重入和不可重入
这种情况出现在多任务系统当中,在任务执行期间捕捉到 信号 并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时 中断 。如果从信号处理程序返回,则继续执行进程断点处的正常指令序列,从重新恢复到断点重新执行的过程中,函数所依赖的环境没有发生改变,就说这个函数是 可重入 的,反之就是 不可重入 的。
满足下面条件之一的多数是不可重入函数:
(1)使用了静态数据结构;
(2)调用了malloc或free;
(3)调用了标准I/O函数;标准io库很多实现都以不可重入的方式使用全局数据结构。
(4)进行了浮点运算.许多的处理器/编译器中,浮点一般都是不可重入的 (浮点运算大多使用协处理器或者软件模拟来实现。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值