1>添加环境变量 export PATH = $PATH:`pwd`
如果此时关闭终端,所设的环境变量将失效;另外可以直接修改用户目录下的.bashrc文件,接着关闭终端重启即可。
2>GCC 使用
GCC的编译流程分为4个步骤:1】预处理(PreProcessing)2】编译(Compiling)3】汇编(Assembling)4】连接
(Linking);
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
$gcc -E test.c -o test.i -E激活预处理
检查语法错误,并生成汇编文件 -S激活预处理和编译,就是指把文件编译成为汇编代码。
$gcc -S test.c -o test.s 对于研究程序效率是非常有帮助的。
3>Makefile
变量定义的两中方式
递归展开方式 VAR= var 可以向后引用变量但不能对变量进行任何扩展 如 CFLAGS = $(CFLAGS) -O就成了死循环
简单方式 VAR:=var 会在变量的定义点按照被引用的变量的当前值展开 如CFLAGS=cc; CFLAGS:=$(CFLAGS) -O就不会造成
死循环。
用?=定义变量 查找前面是否已定义次变量 如 dir:=/foo/bar
FOO?=bar
含义是,如果FOO没有被定义过,那么变量FOO的值就是bar,反之,这条语句将什么也不做,其等价于:
ifeq($(origin FOO),undefined)
FOO = bar
endif
4>autotools工具的使用
5>编写程序,从键盘上输入2个整数,分别计算出它们的商和余数,输出时,商数要求保留2位小数,并对第3位进行四舍五入。
int main(void)
{
int x,y;
scanf("%d,%d",&X,&y);
printf("%5.2f",(double)x/y,x%y);
return 0;
}
这里我们要弄清楚一个原则:当一个运算符两端的运算量类型不一致时,按“向高看齐”的原则对“较低”的类型进行提升。
这道题目如果我们改写成下面的语句:
2】printf("%5.2f",(double)(x/y,x%y));
将会发现运算结果发生了变化。其原因是因为(double)x/y先将x强制转换为double型,接着x/y根据向高看齐原则,x/y为double/double;再看2】中的(double)x/y,是先将x/y取整,再将所得到的整数强制转换为double型,因此我们在处理数据时要十分小心使用括号。