C语言总结day01

2023-05-16

day01

1、 C语言标识符

  • C语言标识符需满足以下条件
    • 只能由英文字母(26个英文字母,包括大小写即共52个)、数字(0-9)和下划线组成
    • 长度为1-32
    • 必须以英文字母或下划线开头

2、C语言风格

  • C语言严格区分英文字母的大小写
  • C语言用“;”作为语句分隔符
  • C语言中“{}"用于标识一组语句,构成复合句(故需要配对使用)
  • C程序书写格式自由,一行内可以写几个语句,一个语句可以写在几行上

3、C程序的开发过程

  • C源程序(.c)—>目标程序(.obj)—>可执行文件(.exe文件)
    通过编辑—>编译源程序—>通过连接其他目标文件和库函数

4、数据类型

  • 基本数据类型
    在这里插入图片描述

  • 常量和变量
    1、常量

    • 整型常量(如100,-100等)
      • 十进制常量
        • 其形式是:d(其中d可以是0-9的一个或多个十进制数位,第一位不能是0)
      • 八进制常量
        • 其形式是:0d(其中d可以是一个或多个八进制数(0~7之间)),起始0是必须的引导符。
      • 十六进制常量
        • 其形式是:0xd(d可以是一个或多个十六进制数(从09的数字,并从"a""f"的字母)),引导符0是必须有的,字母X可以用大写或小写
        • 注意:在一个常数后面加上一个字母l或L,则认为是长整型,如10L,012L,0XAL,0x4fl等
        • 整型数据在内存中是以二进制方式存放的,最高位为符号位,并以补码表示。将一个十进制整数转化为补码表示的方法如下:
          • 对于正数,其补码表示与原码相同。
          • 对于负数,其补码表示为它的反码加1;反码为除符号位,其余数值位取反。
          • 十进制转二进制:例-35=-(32+2+1)(故为1010 0011),-35.25(小数位为1/4)(故为1010 0011.01);十六进制是在二进制的基础上进行的(以二进制4位一组进行转化);八进制也是在二进制的基础上进行的(以二进制3位一组进行转化)。
          • 注意点:在补码中+0和-0都用00000表示,而原码和反码的+0和-0表示方法不一样,故补码相对于原码和反码多出一个位置(用以表示-128),这个-128相对于原码中的-0的二进制表示法.
    • 实型常量:也称为浮点型常量
      • 小数点之前的是整数部分,小数点之后的是尾数部分,它们是可省略的。小数点在没有尾数时可以省略,如(12.24,.34,-.123,-0.0023)都是合法的实型数据。
      • 十进制小数形式:由数字和小数点组成。(如:123.456,-56.79等)
      • 指数形式 :如12.34e3(代表12.34*103),0.145E-25(代表0.1455*10-25)等,由于在计算机输入或输出时,无法表示上角或下角,故规定以字母e或E代表以10为底的指数。但注意:e或E之前必须有数字,且e或E后面必须为整数。如不能写成e4,12e2.5。
      • 注意:在C编译系统中将浮点型常量按双精度来处理(即double型,分配8字节);而float型为4字节,故当float a=3.14159;这样定义的时候会发生警告。解决办法:在浮点型常量后边加上F或f,就表示是float型常量,分配4字节。例如float a = 3.14159f;
    • 字符常量
      • 普通字符:用单撇号括起来的一个字符,如:‘a’,‘3’,'#‘等,注意不能写成’ab’
      • 字符串常量:用双撇号把若干个字符括起来。“boy”.
        • 注意:在C语言中,字符串常量在内存中存储时,系统自动在字符串的末尾加一个“串结束标志”,即ASCII码值为0的字符NULL,常用\0表示。故在程序中,长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。
          • 而在sizeof这个函数实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。(如int a=4;sizeof(a)的值为4);所以在计算字符串:例如:chat str[]=“hello”;sizeof(str)的值为6(会将\0也计算上)。而strlen这个函数计算时不包括结束字符。
      • 转义字符:C还允许用一种特殊形式的字符常量,就是以字符\开头的字符序列。通常转义字符表示ASCII中不可打印的控制字符和特定功能的字符。
        • \o,\oo,\ooo:其中o表示一个八进制数字(例如:'\012’代表八进制的12(即十进制的10)的ASCII码所对应的字符"换行符");\xh[h…]其中h代表一个十六进制数字。
        • 常用转义字符:‘\n’代表换行;’\t’代表将输出位置跳到下一个tab位置(制表位置),一个tab位置为8列;'\r’代表回车;A对应的ASCII值为65;a对应的ASCII值为97;故小写字母比大写字母大32(ASCII用八个二进制位表示一个字符,即1B)
        • 注意:转义字符中只能使用小写字母,每个转义字符只能看做一个字符。(char ch=‘\124’;printf(“%c\n”,ch);)
      • 符号常量:C语言还允许将程序中的常量定义为一个标识符,称为符号常量,符号常量一般使用大写英文字母表示,区别于一般用小写字母表示的变量。符号常量在使用前必须先定义,定义形式为(#define 符号常量名 常量;例如#define PI 3.1415926);
        • 注意:不能对符号常量赋以新值。
        • 注意区分typedef:typedef是为数据类型起一个新名字。

    2、变量

    • 变量代表一个有名字的、具有特定属性的一个存储单元。它用来存放数据,也就是存放变量的值。
    • 变量名和变量值的区别:例如int a = 3;
      • 变量的名:其中a是变量的名,3是变量的值(即存放在变量a的内存单元中的数据)。变量名实际上是以一个名字代表的一个存储地址。
    • 变量必须先定义后使用(C语言中变量定义和变量声明的区别)
      • 变量的定义:用于为变量分配内存空间,还可以为变量指定初始值。程序中,变量有且仅有一个定义。
      • 变量的声明:是告诉编译器,这个变量在别的地方已经定义了,不会为它再重新分配内存,如extern int n;语句是声明整型变量n.
      • 区别:定义也是声明,extern声明不是定义。定义分配内存空间,而声明不会。通过使用extern关键字声明变量名而不是定义它。注意:程序中变量可以声明多次,但只能定义一次。
      • C语言中头文件中extern的作用
        • 为了起到全局变量的作用,即一个变量在一个文件中定义了,可以在其他文件中修改。
        • 这样可以在.h头文件中,使用extern修饰,然后在其他文件中使用该变量。
        • 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
        1. extern修饰变量的声明。
          举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就可以引用到变量v了,只不过这样只能在函数fun作用域中引用v罢了,这还是变量作用域的问题。对于这一点来说,很多人使用的时候都心存顾虑。好像extern声明只能用于文件作用域似的。
        2. extern修饰函数声明。
          从本质上来讲,变量和函数没有区别。函数名是指向函数二进制块开头处的指针。如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。就像变量的声明一样,extern int fun(int mu)可以放在a.c中任何地方,而不一定非要放在a.c的文件作用域的范围中。对其他模块中函数的引用,最常用的方法是包含这些函数声明的头文件。
        3. 使用extern和包含头文件来引用函数有什么区别呢?
          extern的引用方式比包含头文件要简洁得多!extern的使用方法是直接了当的,想引用哪个函数就用extern声明哪个函数。这大概是KISS原则的一种体现吧!这样做的一个明显的好处是,会加速程序的编译(确切的说是预处理)的过程,节省时间。在大型C程序编译过程中,这种差异是非常明显的。
      • extern int ival=10; //虽然ival声明为extern,但是它初始化了,代表这是个定义。
    • 常变量(C99允许使用常变量)
      • 例如:const int a = 3;表示a被定义为一个整型变量,指定其值为3,而且在变量存在期间其值不能被改变。
      • 常变量与常量的区别是:常变量具有变量的基本属性:有类型,栈内存单元,只是不允许改变其值。常变量有名字而常量没有名字。故有名字就可以在程序中被引用。
      • 常变量和符号常量的区别:
        • (#define PI 3.1415926)和(const float pi=3.1415926;)
        • 符号常量PI和常变量pi都代表3.1415926,在程序中都能使用。但二者性质不同:定义符号常量用#define指令,它是预编译指令,它只是用符号常量代表一个字符串,在预编译时,仅是进行字符替换,在预编译后,符号常量就不存在了(全部置换成3.1415926了),对符号常量的名字是不分配内存单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。从使用者的角度看,常变量具有符号变量的优点,而且使用更方便。有了常变量以后,可以不必多用符号常量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言总结day01 的相关文章

  • csp-m4

    反思 此次模测做的不太理想 xff0c t1因为一个循环条件写错导致只拿到了3个点的分数 xff0c t2是读题不仔细没有搞清输出的数据同时对于数据范围估计也产生了错误 xff0c 导致爆0 xff0c t4看到树就犯怵的习惯还有待克服 x
  • anaconda重装后缺失大量文件夹及各种文件并且安装完毕后在菜单栏找不到快捷方式

    项目场景 xff1a anaconda是python程序设计中不可缺少的一个工具 问题描述 anaconda的最新版本重装后 xff0c 只有conda meta Lib Library pkgs等几个文件夹 xff08 没有截图 xff0
  • 如何解决在Linux CLI终端界面中汉字方块乱码

    解决Linux 纯命令界面下中文是方块乱码的问题 最近在学习Linux安全并给磁盘LUKS加密时 xff0c 发现在telinit 1模式下 xff0c 原本正常的中文字符均变成了方块乱码 xff08 如下图 xff09 xff0c 这使得
  • 基于大数据平台的毕业设计

    前言 2022年最新大数据毕设文章 xff1a 基于大数据平台的毕业设计01 xff1a 基于Docker的HDP集群搭建 最近有很多人问我 xff0c 大数据专业有什么好的毕设项目 xff0c 我就简单的回复了一下 也有直接问我要源码的
  • DM9000在TQ2440移植中的地址内容

    2 2 修改宏定义 三个地址相关宏定义是参考别的单板配置复制过来的 xff0c 肯定不能用 xff0c 查看S3C2440芯片手册和原理图 xff0c 确定这三个地址 首先是基地址CONFIG DM9000 BASE xff0c 在原理图中
  • node学习笔记

    阶段一 1 初始Node js javascript 运行环境 1 2 Node js中的javacript 运行环境 1 3 Node js环境安装 百度 1 4 node js 执行javaScript 代码 2 fs文件系统模块 2
  • SQL实验三 select语句查询操作

    SQL select查询实验 一 实验目的 了解查询的概念和方法掌握SQL Server集成管理器查询子窗口中执行select操作的方法掌握select语句在单表查询中的应用掌握select语句在多表查询中的应用掌握select语句在复杂查
  • [编程题]字母交换

    题目描述 xff1a 字符串S由小写字母构成 xff0c 长度为n 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交换m次之后 xff0c 字符串中最多有多少个连续的位置上的字母相同 xff1f 输入

随机推荐

  • 阿里云域名备案问题 注销主体步骤

    阿里云域名备案问题 注销主体步骤 注意 xff1a 当主体下只有一个域名时 xff0c 若在阿里云备案平台按 注销网站 xff0c 主体会成为空壳主体 xff0c 阿里云备案平台不会再显示主体了 xff0c 接下来就按不了 注销主体 操作
  • jenkins安装和配置(一):ubuntu 20.04 jenkins安装

    参考 Installing Jenkins 参考 How to Install and Configure Jenkins on Ubuntu 20 04 LTS 一 安装前提 Java 8 or Java 11 are required
  • 泛型 知识点 总结

    为什么要有泛型 泛型实质上就是使程序员定义安全的类型 在没有出现泛型之前 java也提供了对Objct的引用 34 任意化 34 操作 这种 34 任意化 34 操作就是对Object引用进行向下转型及向上转型操作 但是某些强制类型转换的错
  • 手把手教你centos8/rhel8使用国内源安装virtualbox If your system is using EFI Secure Boot you may need to

    这两天装virtualbox的时候又遇到问题了 xff0c 它显示这个错误 xff1a If your system is using EFI Secure Boot you may need to sign the kernel modu
  • gitlab配置

    在Ubuntu下安装gitlab ce 首先全程使用root进行配置 更新apt源 apt update 安装依赖项 Postfix Configuration 选择 No configuration 就好 apt span class t
  • vs2019更新后的设置问题for(

    最近不小心把vs2019更新了一下 xff0c 虽然增加了很多新功能 xff0c 但是对于我来说最大的意义在于它的字体颜色好像更丰富了 xff0c 其他的也不太能用得到 但是更新之后 xff0c 写for循环的时候发现for i 61 0
  • 插入最少的字符,构造回文串

    题目 xff1a 题目链接 给一个字符串 xff0c 在任意的位置插入一些字符 xff0c 使得这个字符串成为回文串 xff0c 最少需要插入多少个字符 ps xff1a 有一个和这个题很像的题 xff0c 都是插入最少的字符构造回文串 x
  • Linux常用命令大全

    Linux常用命令大全 一 进程管理 xff08 1 xff09 Linux中Kill进程的方法 二 系统信息三 关机 系统的关机 重启以及登出 四 文件和目录五 文件搜索六 挂载一个文件系统七 磁盘空间八 系统负载 top九 用户和群组十
  • 字符的最少变换次数,并查集

    题意 xff1a 给两个字符串a xff0c b a合和b中的字符都是前20个字母 xff08 a t xff09 xff0c a需要进行一些变换 xff0c 使得a等于b 对于每一次变换 xff1a 选取a中相同的字符 xff0c 然后把
  • 并查集 判断无向图是否有环

    无向图中 xff0c 给定一些边 xff0c 然后判断这些边组成的图是否有环 注意这个方法必须保证没有输入重边 对于一条边用 a b 表示 xff0c 然后把a xff0c b加入到并查集中 如果又加入了一条边 b c xff0c 那么如果
  • 彻底地删除垃圾软件

    当不小心下载了垃圾软件 xff0c 想删除掉 xff0c 但是又删不掉 xff0c 或者是删不干净的一些办法 首先 xff0c 我们应该把软件关掉 xff0c 让它停止运行 然后找到软件所在的文件夹 xff0c 把一些能够删除的文件都删除掉
  • Aizu_GRL_1_c floyd算法,判断负环的题

    这题应该是很简单的 xff0c 但是我wa了好久 看了别人的博客 xff0c 还是想不明白哪有问题 xff0c 我发现别人的ac代码要判断一下 xff0c mp i k 和mp k jj 是不是等于inf xff0c 我觉得判不判断没啥区别
  • codeforces 1165D(求因子的问题)

    题意 xff1a 给出除了1和它本身之外的所有因子 xff0c 找出最小的这个数 xff0c 如果有冲突的数就输出 1 思路 xff1a 我是当时没做出来看了大佬的博客才知道 https www cnblogs com fengxunlin
  • cmd 复制文件语法不正确

    复制文件到另一个文件夹 xff1a 语法格式 xff1a copy 原文件的路径和名称 目标文件夹的路径 说语法不正确的时候可能是路径中有空格 比如C Program Files x86 CodeBlocks share CodeBlock
  • 关于斜率的计算

    codeforces 842A 从L到R中选取一个数作为分子 xff0c 从x到y中选取一个数作为分母 xff0c 给一个数k 问有没有可能这个分数等于k 这题也是有够坑的 xff0c 用二分精确的判断要超时 xff0c 但是只是看在不在范
  • c语言线性表实现电话簿(学生信息)

    c语言线性表实现电话簿 span class token macro property span class token directive keyword include span span class token string lt s
  • vsc code-runner插件运行python文件,解释器更改为ananconda

    code runner刚下载下来的默认解释器是系统自带的 xff0c 并不是anaconda的 选择文件 首选项 找到code runner executor map 找到python的命令 xff0c 改为自己的解释器位置即可
  • NT_STATUS_ACCESS_DENIED listing \*

    在centos8上配了个SAMBA与windows共享文件 访问共享目录出现 NT STATUS ACCESS DENIED listing xff0c smb gt span class token operator span span
  • RocketMQ发送普通消息的所有方法以及代码示例

    RocketMQ发送普通消息的所有方法以及代码示例 一 使用RocketMQTemplate发送消息 xff08 整合Springboot xff09 xff08 1 xff09 void send Message lt gt messag
  • C语言总结day01

    day01 1 C语言标识符 C语言标识符需满足以下条件 只能由英文字母 26个英文字母 xff0c 包括大小写即共52个 数字 0 9 和下划线组成长度为1 32必须以英文字母或下划线开头 2 C语言风格 C语言严格区分英文字母的大小写C