夏天南京的凉菜要乘凉吃
南京是中国四大火炉城市之一,夏天据说很热很热,这是我在南京的第一个暑假,有个说法夏天南京的凉菜要乘凉吃,否则时间长了会变成热菜。其实这几天的实训也是,我们所学的东西要及时总结回顾,要不然就会彻底淡忘,上午学的知识点吃了个饭就忘掉了。幸好晚上回来写写心得回顾才有所记忆。
今天的收获还挺多的,主要知识点有:
关键字:(1)union
v 当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;
v 当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处;
(2)enum
枚举类型声明代表常量的符号名称。
enum的默认值
enum kids{nippy, slats, skippy, nina ,liz};
enum的指定值为0,1,2,3,4
enum levels {low=100,medium=500,high=2000};
enum的用法
其多作为switch的标签。
(3)typedef
v typedef是C语言的关键字,其作用是为一种数据类型定义一个新名字
v 格式:typedef 数据类型 自定义数据类型
v typedef unsigned long uint32;
v 在嵌入式的开发中,由于涉及到移植问题,typedef的功能就更引人注目了。
(4)-#define
定义常量与命令(避免幻数)
#define MAX 100
#define SIZE 1024
#define LOGIN_SUCCESS 1
#define LOGIN_FAIL 0
其优点是节省编译时间。
基本语句:(1) if 语句
if 语句是C 语言中最简单、最常用的语句,然而很多程序员用隐含错误的方式写if 语句。如: if(a); 有if 没有else;
(2) while 语句
其表示方法:while(a)
{
}
(3) for 语句
其表示方法:for( 表达式1;表达式2;表达式3)
(4)switch 语句
v switch语句可以产生具有多个分支的控制流程。
它的格式是:
switch(控制表达式)
{
case常量表达式:语句列表
case常量表达式:语句列表
...
default:语句列表
}
其中:
v 每个case 语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠);
v 不要忘记最后那个default 分支。即使程序真的不需要default 处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default 处理。
(5)break 语句和continune 语句
Break 语句用于跳出循环体,常在while 语句和for语句中。
Countinue语句在满足条件时继续向上判断。
(6)goto语句
goto 语句可以灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计
算等语句,因此该语句要谨慎使用。
v 命令行参数:int main(int argc, char *argv[]);
argc: 参数的个数
argv:存放参数的指针数组
下午主要学习了位运算-位操作符
如:& 与运算
| 或运算
ˆ 安位异或运算
》《 移位运算
下午练习:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果。
#include <stdio.h>
int main()
{
unsigned int a;
int b[32],ai[32],i;
scanf("%d",&a);
for(i=0;i<32;i++)
{
b[i]=0;
}
while(a)
{
b[i-1]=a&1;
a=a>>1;
i--;
}
for(i=0;i<32;i++)
{
printf("%d",b[i]);
}
printf("\n");
ai[31]=b[31];
for(i=1;i<31;i++)
{
ai[i]=b[i-1]^b[i+1];
}
for(i=0;i<32;i++)
{ printf("%d",ai[i]); }
printf("\n");
return 0;
}
除此之外还行学习了一些软件编程规范规则:
1-1:程序块要采用缩进风格编写,缩进的空格数为4个。
说明:对于由开发工具自动生成的代码可以有不一致。
1-2:相对独立的程序块之间、变量说明之后必须加空行。
1-3:较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
1-4:循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
1-5:若函数或过程中的参数较长,则要进行适当的划分
1-6:不允许把多个短语句写在一行中,即一行只写一条语句
1-7:if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
1-8:对齐只使用空格键,不使用TAB键。
1-9:函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。
1-10:程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式
1-11:在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非对等操作时,如果是关系密切的立即操作符(如->),后不应加空格。
1-12:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。
这些都是我们这些未经过正规训练,以及行外人所未注意的,总之收获挺大的。