入职培训笔记记录--day2(1、变量 2、生命周期与作用域 3、类型转换 4、运算符)

昨天就是偷了懒 晚上去玩了一会儿,但是任务培训机构给的任务还是完成了。

考研失败给我带来了不安,希望我快点进入入职的节奏。

————————————————————————————————————————————————————————

 

(图片和大多数文字来自于http://www.cnblogs.com/onedime/archive/2012/11/21/2780149.html)

 


1、变量:
定义:相当于创建了一个对象,并且为这个对象分配内存空间,这块内存空间的名字就是变量名;
定义的形式:存储类型 数据类型 变量名;
存储类型:决定了系统给变量分配内存空间的位置
数据类型:决定了系统给变量分配内存空间的大小
变量名:决定了分配好的内存空间的名字

全局变量:也称为外部变量,定义在函数体外部的变量,不属于哪个函数,属于整个程序
局部变量:也称为内部变量,定义在函数体内部的变量,只能在它所在的模块内使用

变量的命名规则
1)命名应当直观且可以拼读,可望文知意,便于记忆和阅读。
标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。

2)命名的长度应当符合“min-length && max-information”原则。
C 是一种简洁的语言, 命名也应该是简洁的。例如变量名MaxVal 就比MaxValueUntilOverflow 好用。标识符的长度一般不要过长,较长的单词可通过去掉“元音”形成缩写。

另外,英文词尽量不缩写,特别是非常用专业名词,如果有缩写,在同一系统中对同一单词必须使用相同的表示法,并且注明其意思。

3)当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写。比如:
   int CurrentVal;
这样的名字看起来比较清晰,远比一长串字符好得多。

4)尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号比如驱动开发时为管脚命名,非编号名字反而不好。
初学者总是喜欢用带编号的变量名或函数名,这样子看上去很简单方便,但其实是一颗颗定时炸弹。这个习惯初学者一定要改过来。

(蛋疼我就是喜欢用数字的菜鸡)

5)对在多个文件之间共同使用的全局变量或函数要加范围限定符(建议使用模块名(缩写)作为范围限定符)。
(GUI_ ,etc)标识符的命名规则:

6)标识符名分为两部分:规范标识符前缀(后缀) + 含义标识。非全局变量可以不用使用范围限定符前缀。

7)作用域前缀命名规则。

8)数据类型前缀命名规则。

9)含义标识命名规则,变量命名使用名词性词组,函数命名使用动词性词组。例如:

变量含义标识符构成:目标词+ 动词(的过去分词)+ [状语] + [目的地];

函数含义标识符构成:动词(一般现时)+目标词+[状语]+[目的地];
10)程序中不得出现仅靠大小写区分的相似的标识符。

11)一个函数名禁止被用于其它之处。例如:
#include "c_standards.h"
void foo(int p_1)
{
   int x = p_1;
}
void static_p(void)
{
   int foo = 1u;
}

12)所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。例如:
const int MAX_LENGTH = 100; //这不是常量,而是一个只读变量,具体请往后看
   #define FILE_PATH “/usr/tmp”
13)考虑到习惯性问题,局部变量中可采用通用的命名方式,仅限于n、i、j 等作为循环变量使用。

一定不要写出如下这样的代码:
   int p;
   char i;
   int c;
   char * a;
一般来说习惯上用n,m,i,j,k 等表示int 类型的变量;c,ch 等表示字符类型变量;a 等表示数组;p 等表示指针。当然这仅仅是一般习惯,除了i,j,k 等可以用来表示循环变量外,别的字符变量名尽量不要使用。

14)定义变量的同时千万千万别忘了初始化。定义变量时编译器并不一定清空了这块内存,它的值可能是无效的数据。
15)不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

 


存储类型:auto static extern register
auto:定义的变量为自动变量,定义的变量存放在栈区,而且auto可以省略
注意:auto定义的变量都是局部变量
register:寄存器型,定义的变量建议放在cpu的寄存器存储空间中,可以加快程序的运行速度,
但是因为寄存器数目少,容量小,如果申请不到就使用一般内存,同auto
register int a = 10;
extern:外部的

 

注意:程序中,有且只能有一个main函数,并且main函数是程序的入口函数
1、声明的必须是全局变量
2、声明的全局变量必须被定义过
3、同时编译两个文件
声明变量:告诉编译器,该变量被定义过,并且为外部变量,可以直接使用
声明与定义的本质区别:定义分配内存空间,声明不分配;
注意:局部变量如果没有被初始化,其值为随机值
全局变量如果没有被初始化,其值为0
static:静态的,static既可以修饰局部变量,也可以修饰全局变量
作用(很重要,一定要记住):
1、static修饰全局变量时,该全局变量只能在本文件内使用
2、static修饰局部变量时,如果该局部变量没有被初始化,其值为0
3、static修饰局部变量时,该局部变量只会被初始化一次
4、static修饰函数时,该函数只能在本文件内使用
与auto最大不同点是:static存储类型的变量在内存中是以固定地址存放的,
而不是以堆栈方式存放的;只要整个程序还在继续运行静态变量就不会随着
说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不
再重新说明,而且还保留上次调用存入的数值。
2、生命周期与作用域
局部变量:
生命周期:从定义开始,到该模块结束
作用域:该模块内
static修饰的局部变量:
生命周期:从定义开始,到整个程序结束
作用域:该模块内
全局变量:
生命周期:从定义开始,到整个程序结束
作用域:整个程序
static修饰的全局变量:
生命周期:从定义开始,到整个程序结束
作用域:该文件内
3、类型转换
隐式类型转换:
参考类型转换图:


1、竖向箭头:(混合运算时)低字节向高字节转换
2、横向箭头:不管是不是混合运算,都会遵循图中的转换方式
注意:横向箭头:char short加上unsigned char unsigned short,
也就是说:char和unsigned char进行运算都会转换成int
强制类型转换:(数据类型)变量;
要注意:比如:int转换成float对变量的值没有影响,
但是flaot转换成int会丢失精度
注意:不管是隐式类型转换还是强制类型转换,只是在运算的过程当中数值发生了类型变换,
变量本身的类型并没有发生任何变化。
4、运算符
算术运算符、关系运算符、逻辑运算符、位运算符
算术运算符:+ - * / %(求余)++ --
注意:%只能用于整数,不能用于小数
++在前:先自加,再赋值 eg:++a,先自加表示a自加1,后赋值,表示将a的值赋给++a表达式
++在后:先赋值,后自加 eg:a++,先赋值,将a的值赋给a++,再自加,将a自加1

int a = 10;
int b = a++;
int c = ++a;
将a++表达式的值赋给b,将++a表达式的值赋给c
关系运算符: > < >= <= == !=
注意:if(1 == a)
逻辑运算符:&& || !
&&:两边的表达式同时为真时,其值才为真
截断法则:当&&左边为假时,其值一定为假,所以&&右边就不执行
||:两边同时为假时,其值才为假
截断法则:当||左边为真时,其值一定为真,所以||右边不执行
!:逻辑非
位运算:~ & | ^ >> <<
~0001 1100 ---> 1110 0011
&:

  0011 1100
&1110 1010
    -----------
  0010 1000
1、可以清除某个数的某一位或某几位
   1010 1010
& 1100 0111
-----------------
   1000 0010
2、判断某个数的某一位是0还是1
   1010 1010
& 0000 1000
-------------------
   0000 1000
3、设置某个数的某一位或某几位(先与后或)
   1001 1111 三到五位设置成101
& 1100 0111
--------------
   1000 0111
|  0010 1000
   ------------
   1010 1111
^:异或 两个位进行异或时,相同为0,不同为1
    0011 1100
^ 1010 1010
----------------
   1001 0110

   0011 1100
^ 0000 0000
----------------
   0011 1100
一个数与0异或,结果是它本身

   0010 1100
^ 0011 1000
------------
   0001 0100
异或可以翻转某个数的某一位或某几位
<<: a << 3表示将a左移三位
左移:溢出部分不要,右边补0
如果是有符号数,可能会引起符号位的改变
>>: a >> 3:表示将a右移三位
右移:溢出部分不要
正数,高位补0
负数,高位补1





posted @ 2017-02-22 10:23  AAAron  阅读(405)  评论(0编辑  收藏  举报