一、变量的作用域和生命周期
什么是作用域,一个变量在哪里可以用,哪里就是他的作用域,即{}里的范围就是他的作用域,出了作用域,便无法使用。局部变量的作用域就是局部变量所在的局部范围
那全局变量的作用域就是任意地方都可以使用,如果在源文件2创建了一个变量想在源文件1中使用,需要在源文件1中声明;即extern int b;即说明此变量或函数在别处定义的需要在此处引用;
如果局部变量跟全局变量名字冲突,局部变量优先使用;
生命周期
局部变量生命周期为进入该变量的作用域开始,出作用域结束;
变量创建的本质是在内存中开辟一块空间,存放数据;
变量出了作用域就销毁,即把开辟的空间返回给操作系统;
全局变量的生命周期为整个程序的开始与结束;
二、运算符
算数运算符:+ - * / %取模操作符 ++ -- 前置++先+1在参与计算,后置++先参与计算后++、
赋值运算符: = += -= *= /= >>= <<=
关系运算符:< > >= <= != ==
逻辑操作符:&&逻辑与 ||逻辑或 ! 逻辑非
逻辑与:运算符两边的表达式同时为真,结果才为真;
补充:int a=0, b=1,c=2;
int d =a++&&b++&++c; printf("%d %d %d"a,b,c);
结果为 1 1 2;因为逻辑与左边为假,则右边不在计算
逻辑或:运算符两边的表达式都为假则为假,有一个表达式为真,结果则是真
补充: int a=1, b=1,c=2;
int d =a++&&b++&++c; printf("%d %d %d"a,b,c);
结果是 2 1 2;因为逻辑或左边表达式为真则右边表达式不计算
逻辑非:表达式为假则变为真,表达式为真,则变假;
在C语言中,非0即是真;
这里逻辑与栗子写错了应该是int c=(a>=10)&&(a>b); printf("%d\n",c);
位操作符也成为二进制操作符:包括左移操作符<< 右移操作符>> 按位非 ~ 按位或 |
按位与& 按位异或^ 关于二进制讲解请看下篇博客
条件运算符也成为三目操作符:表现形式是 ? : 如果表达式1 a>c?为真则执行表达式2,如果表达式1为假 ,则执行表达式三。
在此补充一下逗号表达式:逗号表达式就是从左向右依次计算,整个表达式结果为最后一个结果,不是直接计算最后一个表达式的结果。
三、sizeof()操作符跟strlen()函数的区别
sizeof是一个操作符,是计算数据类型/变量 所占内存空间的大小,单位是字节
1byte==8bit
1 kb =1024byte;
1 mb=1024kb;
1 gb=1024mb;
1 tb=1024gb;
1 pb=1024tb;
sizeof括号里的表达式不参与实际运算;
如果求字符串长度空格也算一个字符,还有\0.
strlen函数():用来求字符串长度;strlen求字符串长度,\0不属于有效长度,但\0是字符串结束标志。
给数组赋值如果没有结束标志,那就会一直找\0知道找到\0,最后求出的长度就会是随机值.