当前位置: 首页 > news >正文

C学习过程记录

文章目录

      • 编译流程
      • 变量
        • 变量的定义:
        • 存储类型说明:
      • 词法符号
        • 标识符
        • 运算符

编译流程

  1. 预处理(头文件的展开,宏定义的同义替换) -E
  2. 汇编(C语言源程序—>汇编语言) -S
  3. 编译(汇编语言—>机器语言) -c
  4. 链接(链接库)-o
  • 例如:
gcc -E demo.c -o demo.i//demo.i 文件为预处理之后的文件
gcc -S demo.i -o demo.s//demo.s 文件为汇编后的文件
gcc -c demo.s -o demo.o//demo.o 文件为编译后的文件
gcc demo.o -o 可执行文件的文件名 // 链接

变量

在一段程序中可以随着程序的运行发生变化的数据

变量的定义:

存储类型 数据类型 变量名(标识符);

存储类型说明:
  • auto:自动类型(默认缺省)
    例如:auto int data;//int data;(等价)
  • static:静态存储类型
    1. 对局部变量使用:
      1. 延长变量的生命周期(周期延长到整个程序结束)
      2. 变量的初始化只做一次
    2. 对全局变量使用:
      1. 限定全局变量的文件作用域(只能作用于当前文件,不能被外部引用)
    3. 对函数使用:
      1. 限定函数的文件作用域(只能作用于当前文件,不能被外部引用)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>int b;
void func()
{// 变量的生命周期为函数的调用开始到函数的调用结束// int c = 2;// static 修饰的局部变量生命周期结束为整个程序的结束,static修饰的变量只会初始化一次static int c = 2c = c + 1;printf("c = %d\n",c);
}
int main(int argc, char *argv[])
{int a;func();func();return 0;
}
  • extern:外部引用类型
    • 引用外部文件(全局变量,函数)
// demo 05
int cc = 100;// demo 04
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
extern cc;
int b;
void func()
{// 变量的生命周期为函数的调用开始到函数的调用结束// int c = 2;// static 修饰的局部变量生命周期结束为整个程序的结束,static修饰的变量只会初始化一次static int c = 2c = c + 1;printf("c = %d\n",c);
}
int main(int argc, char *argv[])
{int a;printf("cc = %d", cc); // 结果是ccreturn 0;
}
  • register:寄存器类型
    • 存储设备:外存(固态硬盘),内存(内存条),寄存器
    • 速度非常快,但是不能所有变量都定义成寄存器类型,寄存器数量有限

词法符号

标识符

命名规则

  1. 只能由字母、数字、下划线组成
  2. 不能以数字开头
  3. 不能和32个关键字重名
运算符
  1. 算数运算符+-*/%
    练习:取出一个四位数的个位数,十位数,百位数,千位数
  2. 赋值运算符=+=-=*=
  3. 逻辑运算符&&(与),||(或),!(非)
    • &&:只要有一个事件为假则整个运算结果为假
    • ||:只要有一个事件为真则整个运算结果为真
    • 短路法则:在一次逻辑与或者逻辑或的运算中,第一个运算式已经可以使得整个运算的结果
  4. 位运算符&(位与),|(位或),~(按位取反),^(异或),>>(右移),<<(左移)
  5. 关系运算符:>,<,==,>=,<=,!=
    • 注意:关系运算会做运算动作,结果为真值为1,结果为假值为0
  6. sizeof运算符:计算数据类型、变量所占空间大小(单位:字节)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>int main(int argc, char *argv[])
{unsigned char a = 0xd7;//交换unsigned char b = (a>>4)&0x0f;unsigned char c = (a<<4)&0xf0;a = b|c;printf("a = %x\n",a);return 0;
}
http://www.dtcms.com/a/541071.html

相关文章:

  • 企业微信自建应用后通过api给用户发消息
  • 岳池发展建设集团有限公司门户网站怎样看网页的友情链接
  • 亚马逊网站怎么做软件开发网站建设维护
  • 【VLNs篇】11:Dynam3D: 动态分层3D令牌赋能视觉语言导航中的VLM
  • 算法复杂度
  • Quant4.0,基于AgentScope开发 | 年化316%,回撤14%的超级轮动策略,附python代码
  • 第三方检测机构如何选对LIMS?以“数治”破解效率与合规难题
  • 建设网站需要什么手续设计公司网站 唐山
  • 网站接入地查询织梦网站修改数据库表数据
  • 南昌企业做网站设计怎么设置微信公众号
  • esp32在vscode使用jtag下载调试openocd问题解决
  • Java奇幻漂流:从Spring秘境到微服务星辰的冒险指南
  • Ubuntu 20.04.6使用vscode从0开始搭建uniapp
  • 【PDF】PDF技术概述
  • 金仓KCSM认证攻略:经验分享
  • [Nginx] 3.由HTTP转发引出的重定向问题
  • 子网站如何做哪个网站有做兼职的
  • hive的SQL语句练习2
  • 做中学网站做课件的网站有哪些
  • 【Java +AI |基础篇day6、7、8 OOP高级 继承 多态 抽象 代码块 内部类 函数式编程】
  • 菲林式投影灯成像模糊?OAS 软件精准优化破瓶颈
  • 匹配最接近的行政区域sql 反向匹配
  • ROS2系列 (6) : 多功能包工作空间(Workspace)最佳实践
  • Nacos动态刷新实战:客户端集成与案例验证
  • 谷歌网站怎么做排名pc端手机网站 viewport 自适应
  • 建设银行衡阳市分行网站数字营销
  • 淄博网站建设卓迅科技有限公司属于什么企业类型
  • 梅州企业网站wap网站推荐
  • 14、Docker swarm-1-理论
  • Jenkins Share Library教程 —— 企业级 Jenkins Shared Library 实战示例