c面试试卷3.0

1、请写出输出结果 4294967285,-128
unsigned short A = 10;
printf(“~A = %u\n”, ~A);
char c=128;
printf(“c=%d\n”,c);
解析:~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285
第二题,c=0x10,输出的是int,最高位为1,是负数,所以它的值就是0x00的补码就是128,所以输出-128。

2、写出输出结果 >6
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts(“> 6”) : puts(“<= 6”);
}
解析:当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。

3、 已知一个数组table,用一个宏定义,求出数据的元素个数________________ #define NUM (sizeof(table)/sizeof(table[0]))
解析:未说明数组类型,因此用sizeof(table[0])表示数组类型大小

4、进程在系统中是否存在的唯一标识是(D)
A、数据集合 B、目标程序
C、源程序 D、进程控制块
解析:进程表征为以下元素:标示符、状态、优先级、程序计数器、内存指针、上下文数据、I/O状态信息、记账信息。这些信息被存储在一个称为进程控制块(PCB)的数据结构中

5、32位机器上定义以下结构体:
struct x
{
long long _x1;
char _x2;
int _x3;
char _x4[2];
static int _x5;
};
请问sizeof(x)的大小是多少 24
解析:long long在32位机器中占8字节,结构体要考虑字节对齐的问题,x5在结构体里,是静态变量,不占结构体空间

二、简答题
1、给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
#define BIT3 (0x1 << 3)
static int a;
void set_bit3(void)
{
a |= BIT3;
}
void clear_bit3(void)
{
a &= ~BIT3;
}

2、什么是进程死锁?造成进程死锁的原因?
如果多个进程同时占有对方需要的资源而同时请求对方的资源,并且在得到请求前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。
产生死锁的原因可以归结为以下两点:
(1)资源竞争;(2)进程间推进顺序非法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值