【操作符与关键字】

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

一. 操作符

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

    复合赋值符

   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 寄存器里反应更快

相关文章
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之当将两个连接器放在同一个作业中时,MySQL作业无法启动,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
小滑块上个斜面,难倒多少高中生?现在,AI让它动起来了
《Augmented Physics:基于机器学习的物理学习工具》 高中物理学习中,小滑块上斜面等问题常让学生困惑。Augmented Physics利用AI技术,将静态物理图示转化为交互式模拟,通过增强实验、动画图示、双向操作和参数可视化等技术,帮助学生直观理解物理概念。研究表明,该工具能有效提升学生对物理概念的理解,具备广阔的应用前景。
213 1
|
消息中间件 NoSQL Java
订单出现超时未关闭场景解决方案
订单出现超时未关闭场景解决方案
524 5
|
API 数据安全/隐私保护 开发者
商品详情 API 接口的调用次数是否有限制?
商品详情API接口调用次数受限,旨在保障系统稳定性和防止恶意攻击。平台依据账户类型设定不同限制:普通开发者账户调用次数较少,而企业级账户享有更高限额但需申请并可能收费。此外,平台还设置了短期和长期调用频率限制,以避免高并发请求导致服务器过载。
390 2
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
198 1
|
资源调度 搜索推荐 Shell
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
本文介绍了如何使用 Vue3、TypeScript 和 Vite 开发组件库并将其发布到 npm。文章详细描述了安装依赖、配置项目、创建文档网站以及编写组件文档的步骤。通过使用 VitePress,可以轻松搭建组件库的文档站点,并实现 Algolia 搜索功能。此外,还提供了自动化脚本用于部署静态网站至 GitHub 以及发布组件库到 npm。最后,展示了完整的目录结构和网站效果。
496 1
使用VitePress静态网站生成器创建组件库文档网站并部署到GitHub
|
关系型数据库 MySQL
深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE
650 0
|
弹性计算 负载均衡 定位技术
阿里云服务器地域怎么选择比较好?
阿里云服务器的地域选择至关重要,涉及速度延迟、内网互通、价格差异及备案限制。应依据用户位置就近选择,如北方选华北、南方选华南、全国性服务优选华东。中国大陆内部网络延迟较小,但国际线路差异明显。需考虑内网互通以优化性能,不同地域价格也有所不同。此外,如需在中国内地进行经营性备案,则需选择特定地域如北京或深圳。综合考量这些因素,可确保业务高效稳定运行。更多详情参见阿里云官方页面。
|
运维 Docker 微服务
深入浅出:使用Docker容器化部署微服务架构
在当今快速演进的软件开发领域,微服务架构因其灵活性和可扩展性而成为了企业级应用的首选。然而,部署和管理众多微服务的复杂性也随之增加。本文将探讨如何通过Docker容器技术简化微服务架构的部署和运维,实现服务的快速交付和高效管理。我们将从Docker的基本概念入手,逐步深入到如何构建、部署和管理容器化的微服务,最终展示一个简单的微服务应用部署案例,帮助读者理解并掌握使用Docker容器化部署微服务的全过程。
|
数据可视化 Java 关系型数据库
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
593 0