Cday_11

来源:互联网 发布:域名买多少年合适 编辑:程序博客网 时间:2024/06/06 03:58

1.
linux环境实践,熟悉使用(网络搜索)
ls //list 列出当前文件夹的所有文件
cd //change directory 更改(切换)目录
mkdir //make directory 创建目录(文件夹)
rm //remove 删除文件(-f)
mv //move 移动文件
touch //创建文件
pwd //print work directory打印当前工作目录





3.熟悉预处理标识符:
__LINE__
__FILE__
__DATE__
__TIMRE__
#
##



//#的使用

#include <stdio.h>

#define PRINT(FORMAT,VALUE) \
 printf("the value of "#VALUE" is "FORMAT" \n",VALUE)

int main()
{
 int a = 10;
 PRINT("%d",a+3);
 return 0;
}


//##的使用

#include <stdio.h>

#define SUMS(x,value) \
 sum##x+=value
int main()
{
 int sum3 = 20;
 printf("%d\n",SUMS(3,10));
 return 0;
}


4.了解宏和函数的区别

宏相对于函数的优点
用于调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更多。所以宏比函数在程序的规模和速度方面更胜一筹/
更为重要的是函数的参数必须声明为特定的类型,所以函数只能在类型合适的表达式上使用,而宏是与类型无关的

函数相对于宏的好处
每次使用宏时,一份宏定义的代码将插入到程序中。除非宏比较短,否则可能大幅度增加代码长度
宏没法调试。
宏由于类型无关,所以它也不够严谨
宏可能会带来运算优先级的问题,导致容易出错


5.写一个宏可以将一个数字的奇数位和偶数位交换。
#include <stdio.h>
#define CHANGE(X)\
(((X&(0x55555555))<<1)|((X&(0xAAAAAAAA))>>1))
int main()
{
    int x = 2;
    printf("%d\n", CHANGE(x));   //5的二进制:0101  交换后得二进制:1010 其值为10
    return 0;
}

6.使用宏实现两个数中求较大值。
#define MAX(VALUE1,VALUE2) \
 VALUE1>VALUE2?VALUE1:VALUE2
int main()
{
 int a = 10;
 int b = 20;
 printf("较大值为:%d\n",MAX(a,b));
 return 0;
}