每日一练8.19

1、当n=6时,下列函数的返回值为多少?

int foo(int n)
{
	if(n <= 2)
		return n;
	return foo(n-1) + foo(n-2);
}


13

2、下面程序的值为多少

union data{
	struct{
		int x;
		int y;
	}s;
	int x;
	int y;
}d;	int main(int argc, const char *argv[])
{
	d.x = 1;
	d.y = 2;
	d.s.x = d.x * d.x;
	d.s.y = d.y + d.y;
	printf("%d %d \n", d.s.x, d.s.y);
}


4 8

3、下面程序的输出结果

typedef struct Data{
	unsigned int a : 2;
	unsigned int b : 4;
	unsigned int : 0;
	unsigned int c : 3;
}DATA;

DATA t = {.a = 3, .b = 6, .c = 7};	int main(int argc, const char *argv[])
{
	struct data *p = &t;
	p->a = (p->a) & 3;
	p->b = (p->b) | 4;
	p->c = (p->c) ^ 5;
	printf("%d %d %d\n", t.a, t.b, t.c);
	return 0 ;
}

3 6 2

4、下面的输出结果是多少?

struct data{
	long num;
	char *ptr;
	short int data;
	char ha;
	short ba[5];
}*p;	int main(int argc, const char *argv[])
{
	p = 0x10000000;
	printf("%d\n", sizeof(struct data));
	printf("%#x\n", p + 0x200);
	printf("%#x\n", (char *)p + 0x200);
}


32 0x10004000 0x10000200

5、宏定义作用:标识别名(定义常量)、宏函数、转字符串、拼接
1)写一个宏定义,用它求一个字符数组长度(宏函数);
2)写一个用到##的宏定义,并说明它的作用;
3)下面两种写法有什么区别,试说明这是宏的何种用法

1.#define ARRAY_LENGTH(arr) (sizeof(arr) / sizeof((arr)[0]))
2.

#include <stdio.h>

#define PRINT_VAR(var, format) printf(#var " = " format "\n", var)

int main() {
    int num = 42;
    float pi = 3.14159;
    char letter = 'A';

    PRINT_VAR(num, "%d");
    PRINT_VAR(pi, "%.2f");
    PRINT_VAR(letter, "%c");

    return 0;
}

在上述示例中,我们定义了一个宏 PRINT_VAR,它接受两个参数 var 和 format。在使用宏时,我们传入一个变量以及一个格式化字符串。宏展开时,#var 将会将 var 转化为字符串,然后 #var " = " format “\n” 使用 ## 运算符将这些字符串拼接在一起。最终,宏展开后的代码将会打印出变量名和对应值。

运行上述示例代码,输出将是:

num = 42
pi = 3.14
letter = A
3.
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值