【操作符与关键字】

简介: 【操作符与关键字】

一. 操作符

    移位操作符--移动二进制的位   << >>

    复合赋值符

   a += 3  -= *= /= &= ……

  1.      单目操作符

! 逻辑反操作 -----0为假  非0为真

 -  负值

 +   正值

&   取地址

sizeof 操作数的类型长度 以字节为单位

~ 对一个数的二进制按位取反

* 间接访问操作符

-- 前置 后置

++ 前置 后置

++a // a++

前置++ 先加1,后使用 后置++ 先使用,后加1

     强制类型转换

int a = (int)3.14

     逻辑操作符

&& 与  ||  或

     三目操作符

(a >b ) ? (a) :(b) 真为a 假为b

      逗号表达式

 从左向右依次计算

      exp1,exp2,exp3,

二. 关键字

常见关键字

---预设好的 不能自己创造 变量的名字不能是关键字

 类型有关 auto char const double enum

                float int long register short

                signed sizeof static struct

                typedef union unsigned void

 控制逻辑 break continue case default do

                else if for goto return while switch

 申明外部符号 extern

  volatile const

      typedof 类型定义(重命名)

typedef unsigned int  uint;
int main(){
unsigned int num1 = 0 ;
uint num2 = 0;
return 0;
}

// 可以让复杂的类型简单化

//num1 num2 是同一种类型的变量

static 修饰变量和函数

修饰局部变量 (进入函数创建 出了函数销毁(空间还给操作系统))
void test() {
  int a = 2;
  a++;
  printf("%d\n", a);
}
int main() {
  int i = 0;
  while (i < 5) {
    test();
    i++;
  }
  return 0;
}

输出 3\n3\n3\n3\n3\n

加上static之后

//static 修饰局部变量 使得局部变量出了作用域并不销毁,下一次进入函数,依然使用的是上次留下的值

//如果反复调用函数,产生累计的效果

//本质上:static修饰局部变量使得变量的存储位置发生变化

//本来局部变量是放在栈区,被static修饰后,放在内存的静态区,感觉是生命周期变长

//作用域没有变化

void test() {
  static int a = 2;
  a++;
  printf("%d\n", a);
}
int main() {
  int i = 0;
  while (i < 5) {
    test();
    i++;
  }
  return 0;
}

输出 3\n4\n5\n6\n7\n

编译器在编译的时候

是每个.c文件单独编译的 (链接)

解决方法: (声明外部符号) extern int g_val

 

 

         

修饰全局变量

static 修饰全局变量后,使得这个全局变量只能在自己所在的源文件内部使用

其他源文件无法使用

本来一个全局变量是具有外部链接属性的,只要合理的声明,全局变量在其他源文件内部,可以使用

而被static 修饰后,外部链接属性就变成了内部链接属性,只能在自己所在的源文件内部使用了

修饰函数

两个头文件

 

加上static就不能调用了

//本来函数是具有外部链接属性的

//在其他源文件内部可以被调用

//被static修饰之后外部链接属性就变成了内部链接属性

//就只能由自己所在的源文件内部使用

 register 寄存器关键字

电脑上有存储设备  寄存器  4字节 几十个

                                内存      8G/6G/32G

                               硬盘     500G/1T

                           (网盘)    1T/2T 免费

register int a  = 10; 建议性关键字 (建议a放在寄存器中)--最后由编译器来界定是否

放入

                   因为多次调用a 寄存器里反应更快

相关文章
|
6月前
|
存储 C++
C/C++中位操作符(&,|,^,~)的详解使用
C/C++中位操作符(&,|,^,~)的详解使用
|
存储 索引
【操作符】
【操作符】
41 0
|
4月前
|
SQL 数据库
IN 操作符
【7月更文挑战第15天】IN 操作符。
40 4
|
6月前
|
C语言
条件操作符
条件操作符(三目操作符)是C语言中的唯一一个三元运算符,形式为:`表达式1 ? 表达式2 : 表达式3`。如果`表达式1`为真,执行`表达式2`并返回结果;否则执行`表达式3`并返回结果。例子展示了如何用条件操作符输出两个数中的较大值。
33 1
|
6月前
|
存储 编译器
操作符详解1(一)
本文介绍了编程中的操作符分类和位操作,包括算术操作符(如 +, -, *, /, %)、移位操作符(<<, >>)、位操作符(&, |, ^)、赋值操作符、单目操作符、关系操作符、逻辑操作符和条件操作符。还讨论了原码、反码和补码的概念,以及左移(<<)和右移(>>)操作符的工作原理,包括逻辑右移和算术右移的区别。最后提到了位操作符按位与(&)、按位或(|)、按位异或(^)和按位取反(~)的运算规则。
41 1
|
存储
操作符详解上(非常详细)
操作符详解上(非常详细)
76 1
|
11月前
|
存储 编译器
操作符详解(1)
操作符详解(1)
38 0
|
索引
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
操作符之关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用操作符,函数调用操作符,访问结构体成员操作符
|
存储 编译器 C语言
7.27C语言知识点之操作符
7.27C语言知识点之操作符
56 0
|
存储
操作符(详解)
操作符(详解)
137 0