1. linux环境实践,熟悉使用(网络搜索)
ls //list 列出当前文件夹的所有文件
cd //change directory 更改(切换)目录
mkdir //make directory 创建目录(文件夹)
rm //remove 删除文件(-f)
mv //move 移动文件
touch //创建文件
pwd //print work directory打印当前工作目录
2.在linux环境实践,使用vim编写一个程序,然后使用gcc查看【预处理】、【编译】、【汇编】、【链接】各阶段文件的内 容。并熟悉相关指令。
3. 熟悉预处理标识符:
__LINE__
__FILE__
__DATE__
__TIME__
#
##
(1)__LINE__:文件当前的行号;
(2)__FILE__:进行编译的源文件;
(3)__DATE__:文件被编译的日期;
(4)__TIME__:文件被编译的时间;
(5)#:把一个宏参数变成对应的字符串;
(6)##:把其两边的符号合成一个符号;
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define PRINT(X) printf("the "#X" is %d\n",100);
#define LINK(X,Y) X##Y
int main()
{
int num = 12;
printf("line:%d\n",__LINE__);
printf("file:%d\n",__FILE__);
printf("date:%d\n",__DATE__);
printf("time:%d\n",__TIME__);
printf("%d\n",LINK(nu,m));
system("pause");
return 0;
}
4. 了解宏和函数的区别。
区别有:宏比函数高效,当实现体极其简单时更明显;函数传不了类型,宏可以传类型;宏参不会自动求值只能替换;宏不能递归;宏命名约定上需全部大写等。
5. 写一个宏可以将一个数字的奇数位和偶数位交换。
拿出所有的奇数位,偶数位全为零,向左移动一位;拿出所有的偶数位,奇数位全为零,向右移动一位
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define EXCHANGE_BIT(X) (X = ((X & 0xaaaaaaaa) >> 1) | ((X & 0x55555555) << 1))
int main()
{
int num1 = 0;
int num2 = 0;
int even = 0;
int odd = 0;
printf("Please input the number:\n");
scanf("%d", &num1);
num2 = num1;
even = (num1 & 0xaaaaaaaa) >> 1;
odd = (num1 & 0x55555555) << 1;
num1 = even | odd;
printf("%d\n",num1);
EXCHANGE_BIT(num2);
printf("%d\n",num2);
system("pause");
return 0;
}
1. 使用宏实现两个数中求较大值。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define MAX(X,Y) X > Y?X:Y
int main()
{
int a=2;
int b=3;
printf("%d\n",MAX(a,b));
system("pause");
return 0;
}