-
default,配合switch用的
-
extern,声明同一工程下的其他文件的全局变量,申明外部符号的
-
static
//1、修饰局部,2到11,static使得局部变量a不销毁,生命周期变长(整个程序),**本质改变了变量的存储类型,使得它从栈区划到静态区** //2、修饰全局,缩小使用范围,下面的g_val将不得在同一工程的不同文件使用,即便用extern。
**本质是将GV的外部链接属性修改为内部链接属性。
** //3、修饰函数。
**本质跟修饰全局一致。
如下面的test只能在其源文件内部使用。
** void test() { //int a =1;//输出10个2 //static int a =1;// a++ cout<
从语言的角度上看,内存分为三个区,栈区(存放局部变量,函数参数),堆区(动态内存分配)以及静态区(全局变量,static修饰的)。
-
typedef,类型重命名
typedef unsigned int u_int; int main() { u_int a =10; unsigned int b = 10; return 0; }
-
注意:#define #include 不是关键字,这个叫做预处理指令
-
移位 *** 作符:>>右移,<<左移。
右移是存在两种,一种是逻辑右移(全部补0),一种是算数右移(补被舍弃的那个),可以用负数来测试,但是建议不要移动负数位,也不要写成<<-5,这种东西。
int main() { int a =2; //向左移动一位,移动的是二进制位,a保持不变。
//因为a是int,4B,即32b,所以int 2 = 00000000 00000000 00000000 00000010 //左移,把整个向左移动1位,最后位补0变成 //00000000 00000000 00000000 00000100 = 4 int b =a<<1; return 0; }
-
位 *** 作符:&按位与, |按位或, ^按位异或(相同则0,相异则1),a^a=0,a^0=a。
这个也是在二进制下 *** 作的,且必须只能在整数使用。
int main() { //00000000 00000000 00000000 00000011 int a =3; //00000000 00000000 00000000 00000101 int b = 5; //00000000 00000000 00000000 00000001 int c = a&b; //00000000 00000000 00000000 00000111 = 7 int d = a|b //00000000 00000000 00000000 00000110 = 6 int e = a^b; return 0; }
-
sizeof,这玩意儿不是函数,不是函数,不是函数,是 *** 作符,这意味着我们可以不需要sizeof(arr),直接用sizeof arr。
-
逻辑运算符:&&和||是满足条件后便不再执行的,如&&,如果 其左边为假,则执行完左边后,右边不再执行;||如果左边为真,则执行完左边后,不再执行右边。
-
逗号表达式
int main() { int a=2,b=3,c=1; //从左向右依次计算,并赋予最后一个表达式的值给d int d = (a=b+2,c=a-4,b=c+2); return 0; }
可以解决一些冗余的代码,不易读就是了
a = get_val(); count_val(a); while(a>0) { a = get_val(); count_val(a); } //上面代码等价于 while(a = get_val(),count_val(a),a>0) { }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)