C语言基础(一)

news2024/11/19 20:46:12

C语言基础(一)

  • 程序
  • 程序的设计步骤
  • 计算机中数据表示
    • 非数值数据
    • 数值转换
      • (二、八、十六)进制转十进制
      • 十进制转换(二、八、十六)进制
      • 二进制和八、十六进制转换
    • 基本数据类型
      • 关键字(32个)
      • 标识符
      • 基本数据类型大小
      • 有符号数和无符号数
    • 字符型家族char
    • 整型家族int
    • 浮点型家族
    • 数据类型转换
      • 强制类型转换
      • 隐式类型转换(编译器进行转换)
    • 转义字符
  • 常量
    • 字符常量
    • 整型常量
    • 浮点型常量
    • 字符串常量
    • 标识常量(宏)(符号常量)
      • 宏只是一个简单的替换
  • 变量
    • 全局变量与局部变量
    • 存储类型
    • 初始化
    • extern
    • static
  • 生命周期和作用域
    • 生命周期
    • 作用域

程序

  • 计算机能够识别的一组有序的指令
    hello.c和a.out哪个是程序?
    a.out是程序,是计算机能够识别的指令

程序的设计步骤

  • 预处理 生成.i文件
  • 编译阶段 检测代码规范型、是否有语法错误,再翻译成汇编语言。生成.s文件
  • 汇编阶段 生成.o文件
  • 链接阶段 链接库函数文件

计算机中数据表示

非数值数据

  • 不能够直接进行计算的数据
  • 通过ascll码以二进制形式存储

数值转换

二进制 八进制 十进制 十六进制

(二、八、十六)进制转十进制

对应的数字乘以其他进制的位数次幂

  • 二进制转十进制
    1011 ——> 12 ^ 0 + 12 ^ 1 + 02 ^ 2 +12 ^ 3

  • 八进制转十进制(八进制以0开头)
    076 ——> 68 ^ 0 + 78 ^ 1

  • 十六进制转十进制(十六进制以0x开头)
    0xafc ——> 1216 ^ 0 + 1516 ^ 1 +10*16 ^ 2

十进制转换(二、八、十六)进制

除以其他进制倒取余数

  • 十进制转二进制(除2倒取余)
    34 ——> 0010 0010
    在这里插入图片描述

  • 十进制转八进制(除8倒取余)
    34 ——> 042

  • 十进制转十六进制(除16倒取余)
    34 ——> 0x22

二进制和八、十六进制转换

  • 二进制和八进制转换
    每一个八进制可以用三位二进制数进行表示
    0 —— 000
    1 —— 001
    2 —— 010
    3 —— 011
    4 —— 100
    5 —— 101
    6 —— 110
    7 —— 111

10 101 001转换为八进制:0251
076转换为二进制:111 110

  • 二进制和十六进制相互转换
    每一个十六进制可以用四位二进制数去表示
    0 —— 0000
    1 —— 0001
    2 —— 0010
    3 —— 0011
    4 —— 0100
    5 —— 0101
    6 —— 0110
    7 —— 0111
    8 —— 1000
    9 —— 1001
    a —— 1010
    b —— 1011
    c —— 1100
    d —— 1101
    e —— 1110
    f —— 1111

10 1001 0101转换为十六进制:0x295
0xa865转换为二进制:1100 1000 0110 0101

基本数据类型

关键字(32个)

  • 系统预先定义好的,有特定含义的,都是小写,不能重新定义
    数据类型:char、short、int、long、float、double、struct、union、enum、void
    控制语句:if、else、while、switch、case、default、break、continue、for、do、goto
    存储类型:auto、static、extern、register
    return:返回函数
    const:只读
    signed:有符号数
    unsigned:无符号数
    sizeof:求所占内存空间大小
    typedef:给已有的数据类型起别名
    volatile:防止编译器优化

标识符

  • 程序员自己去定义的,一般用来定义变量名,函数名,类型名
    要求:见名知意

  • 不能和关键字重名

  • 由数字、字母、下划线组成

  • 第一个不能为数字

基本数据类型大小

32OS
字符型:char(1字节)
整型:int(4字节) short(2字节)long(4字节)
浮点型:float(4字节) double(8字节)
注:使用sizeof求得上述数据
64OS
字符型:char(1字节)
整型:int(4字节) short(2字节) long(8字节)
浮点型:float(4字节) double(8字节)

有符号数和无符号数

  • 有符号数:signed——>正数和负数
  • 数值数据在计算机中以二进制进行存储,并且所有数据在计算机中都是以补码的方式存储
  • 符号位:最高位为符号位,0表示正数,1表示负数
    10 ——> 0000 1010
    -10 ——> 1000 1010

正数(原码,反码,补码都是一样的)
eg:10
原码:0000 1010
反码:0000 1010
补码:0000 1010
负数
(原码:最高位为符号位;
反码:符号位不变,其他位取反;
补码:反码+1)

eg:-10
原码:1000 1010
反码:1111 0101
补码:1111 0110

知道一个负数的补码,怎样求原码?

  1. 补码-1,然后符号位不变,其他位取反
  2. 补码的补码就是原码

无符号数:unsigned ——>正数

字符型家族char

值域范围

char(1byte = 8bit)
unsigned: 0000 0000 ~ 1111 1111 (0~255)
signed: 1000 0000 ~ 0111 1111 (-128~127)

超级重点!!!超范围情况下,应该转圈循坏计算数值

//unsigned char 0~255
unsigned char c = 260;
printf("%d\n", c);//——>4

255 256 257 258 259 260
—— 0— 1— 2— 3—— 4

//signed char -128~127
signed char a = 130;
printf("%d\n", a);//——>-126

127 128 129 130
—— -128 -127 -126

//signed short int -32768~32767
//unsigned short int 0~65535
short i = 65535;
printf(%d\n”,i);

32767 32768 32769 … 65535
—— -32768 -32766 … -1

整型家族int

int(4byte = 32bit)
unsigned:(0~2^32 -1)
signed:(-2 ^ 31 ~ 2 ^ 31 -1)

浮点型家族

float(4byte):%f
double(8byte) :%lf
注:%f和%lf默认输出小数点后六位

数据类型转换

强制类型转换

float a = 3.14;
int b = 0;
b = (int)a;//b=3

隐式类型转换(编译器进行转换)

在这里插入图片描述
横向箭头:不管有没有混合运算,都会进行转换
纵向箭头:只有进行混合运算,才会进行转换
在这里插入图片描述

四种类型char和short
signed char和unsigned char未进行转换
在这里插入图片描述

转义字符

在这里插入图片描述

‘\123’ 三位八进制 (1个字符)
‘\045’ 三位八进制
‘\x45’ 二位十六进制 (1个字符)

常量

程序运行期间,其数值不会也不能改变的量

字符常量

整型常量

浮点型常量

指数形式:1e+4 1e-4
%g:选择小数或者指数较短的一种进行输出(合适的一种)
在这里插入图片描述

字符串常量

字符串常量以’\0’作为结束符
在这里插入图片描述

  • 用sizeof()函数是求字符串所占空间大小
  • 用库函数strlen()函数是求字符串长度
  • hello字符串所占空间大小为6,字符串长度为5,不包含’\0’

标识常量(宏)(符号常量)

是程序员自己定义的一个特殊的标识符,代表一个恒定的值
好处在于提高代码的可读性和可维护性,当需要修改某个常量的值时,只需要在定义出修改一次,不需要在整个程序中修改

#define  宏名  表达式

注意:
1、宏名用大写字母
2、宏后面无分号!!!

宏只是一个简单的替换

宏函数(既有宏的特点,又有宏函数的特点)

#define  函数名(形参)  函数体

在这里插入图片描述
在这里插入图片描述
宏只是一个单纯的替换,不会考虑优先级的问题,所有需要给每个形参手动加一个括号,以及整个表达式加一个括号

变量

变量意味着要开辟空间
在这里插入图片描述

<存储类型>  数据类型  变量名;
            int        a;
  • 数据类型:决定开辟空间的大小
  • 数据类型:char int short long float double
  • 存储类型:决定开辟的空间在哪个分区
  • 存储类型:static auto register extren

全局变量与局部变量

  • 全局变量:定义在函数体外的变量(存放在静态区)
  • 局部变量:定义在函数体内的变量(存放在栈区)

在这里插入图片描述

存储类型

auto register extern static

  • auto:只能用来修饰局部变量,修饰的变量存放在栈区
  • register:只能修饰局部变量,修饰的变量存放在寄存器中,可以提高速度,如果寄存器已满,会将变量存放在栈区
  • extern:只能修饰全局变量,修饰的变量存放在静态区
  • static:即可修饰全变变量,也可以修饰局部变量,修饰的变量存放在静态区

初始化

定义变量的时候就给变量赋值
注意区分初始化和赋值

int a = 9;//初始化
int b;//定义变量
b = 3;//赋值

在32OS中
1、全局变量不初始化,其值为0,存放在静态区.bss文件中;若初始化,存放在静态区.data文件中
2、局部变量不初始化,其值为随机值,存放在栈区;

在这里插入图片描述

在这里插入图片描述

extern

  • 修饰全局变量,存放在栈区
  • 程序可以由多个.c文件组成,但是main函数只能有一个
    在这里插入图片描述

static

  • 既可以修饰全局变量,也可修饰局部变量,修饰变量的时候存储在静态区

修饰局部变量:延长局部变量的生命周期(不改变其作用域),如果局部变量没有初始化,其值为0,如果初始化过了,那么只能初始化一次

在这里插入图片描述
在这里插入图片描述

修饰全局变量:限制作用域(只能在本文件内使用)不改变其生命周期

在这里插入图片描述

生命周期和作用域

生命周期

一个变量从什么时候开辟空间到什么时候释放空间的时间段

作用域

一个变量可以使用的范围

局部变量:
1、生命周期:从定义开始到模块代码(大括号)结束
2、作用域:大括号内

全局变量
1、生命周期:从定义开始到整个程序结束
2、作用域:整个程序

static修饰的局部变量
1、生命周期:从定义开始到整个程序结束
2、作用域:大括号内

static修饰的全局变量
1、生命周期:从定义开始到整个程序结束
2、作用域:本文件内

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1570520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【复习linux相关命令】

查看命令位置&#xff0c;查找命令 which命令 查看命令的位置 [rootVM-12-15-opencloudos ~]# which cd /usr/bin/cd [rootVM-12-15-opencloudos ~]# which java /usr/local/java/jdk1.8.0_261/bin/java [rootVM-12-15-opencloudos ~]# which pwd /usr/bin/pwdfind查找文件 …

【html威廉希尔体育体育羽毛球页面带注册】学生网页设计作业源码APP是不是真的?

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓球 | 网球 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a;结构CSS&#xff1a;样式 在操作方面…

Python人工智能应用----文本情感分析

1.问题引入 接着前两节课的内容&#xff0c;今天我们要构建一个人工智能系统。 它的目的是像人类一样&#xff0c;区分评价的情感是正面还是负面的。 接下来&#xff0c;我们要对提取的文本进行感情色彩的分析&#xff0c;这个就是文本情感分析&#xff0c;我们要使用机器学习…

Cisco路由器配置IPv6 Manual隧道

Cisco路由器配置IPv6 Manual隧道 IPv6与IPv4共存的方式 IPv6与IPv4共存方式大致有三种&#xff1a; 双栈&#xff1a;要求网络中所有设备均同时支持IPv4和IPv6转换&#xff1a;转换这种方式将IPv6协议的报头转换成IPv4协议报头。隧道&#xff1a;假定两个IPv6节点要使用IPv6…

6:算法基础--6.1:线性结构 ,6.2:查找算法

转上一节&#xff1a; http://t.csdnimg.cn/ql5Cdhttp://t.csdnimg.cn/ql5Cd 课程内容提要&#xff1a; 6&#xff1a;知识点考点详解 6.1&#xff1a;线性结构 通常分析时间复杂度的方法是从算法中选取-种对于所研究的问题来说是基本运算的操作&#xff0c;以 该操作重…

从多模态生物图数据中学习Gene的编码-MuSeGNN

由于数据的异质性&#xff0c;在不同的生物医学背景下发现具有相似功能的基因对基因表示学习提出了重大挑战。在本研究中&#xff0c;作者通过引入一种称为多模态相似性学习图神经网络的新模型来解决这个问题&#xff0c;该模型结合了多模态机器学习和深度图神经网络&#xff0…

2012年认证杯SPSSPRO杯数学建模C题(第二阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现&#xff1a; 从 1984 年的美国洛杉矶奥运会开始&#xff0c;奥运会就不在成为一个“非卖品”&#xff0c;它在向观众诠释更高更快更强的体育精神的同时&#xff0c;也在攫取着巨大的商业价值&#…

(React组件基础)前端八股文修炼Day6

一 类组件与函数组件有什么异同 在React中&#xff0c;类组件和函数组件是创建组件的两种主要方式。随着React的发展&#xff0c;尤其是自Hooks在React 16.8中引入以来&#xff0c;函数组件的功能变得更加强大&#xff0c;使得它们能够更加方便地与类组件相竞争。下面是类组件…

打造专业运营团队,武汉星起航引领全球跨境电商未来趋势

近年来&#xff0c;随着全球经济的不断发展&#xff0c;跨境电商作为国际贸易的一种新模式&#xff0c;已然成为推动全球经济增长的新引擎。在这个浩荡的潮流中&#xff0c;武汉星起航以亚马逊自营店铺为依托&#xff0c;凭借丰富的实战运营经验和专业的团队&#xff0c;正积极…

蓝桥杯-dfs搜索模板题(一)

蓝桥杯-dfs搜索模板题&#xff08;一&#xff09; P2089 烤鸡P1088 火星人P1149 火柴棒等式P2036 PERKETP1135 奇怪的电梯结语 P2089 烤鸡 对于每个位置枚举数字 #include<bits/stdc.h>using namespace std;const int N1010;int n;int arr[N];//临时方案 int res0;//方案…

雪球acw_sc__v2 加密参数构造解析

打开雪球网站:https://xueqiu.com/today 首先打开Edge浏览器,清除应用程序里面的cookie 接着,跳转到源代码,刷新网页,进行调试,首先进入debugger模式,需要反debug调试。 输入相关代码,解除subug模式 点击保留日志,这里显示有两次请求,分别分析下。 第一个today返…

回归(maskrcnn)

一、写在前面 虽然粉丝量很少 但是这是一个很好的平台 记录自己的历程 我看了一个很好的讲解视频 我记录一下操作过程4-maskrcnn源码修改方法哔哩哔哩bilibili 作者已经注销帐号了 但内容很好 二、maskrcnn介绍 Mask R-CNN&#xff08;Mask Region-based Convolutional Neur…

经济学 博弈论 行为经济学

四种市场结构&#xff1a; 划分依据&#xff1a;生产者的数量&#xff0c;对价格的控制力&#xff0c;进入市场的难度&#xff08;新的商家进入市场的困难难度&#xff09; 1.完全竞争市场&#xff08;大多数农业产品&#xff1a;草莓&#xff09; 个体商家对价格没有控制力&a…

短视频素材在哪里找?八大平台解决你的创作需求

大家好&#xff01;在短视频创作的过程中&#xff0c;寻找优质的素材网站是非常重要的。那么&#xff0c;短视频素材在哪里找呢&#xff1f;推荐八个主流的视频素材分享网站&#xff0c;话不多说直接上干货。 蛙学网&#xff08;waxue.com&#xff09;——中国 首先要推荐的是…

Mybatis——鉴别器映射

鉴别器映射 有时一个单独的数据库查询会返回很多种不同数据类型的结果集。 discriminator鉴别器元素可以用来处理这种情况 数据库表结构 创建实体类、映射接口和映射文件 实体类employee package org.example.demo2;import lombok.Data;Data public class Employee {priv…

好菜每回味道不同--建造者模式

1.1 炒菜没放盐 中餐&#xff0c;老板需要每次炒菜&#xff0c;每次炒出来的味道都有可能不同。麦当劳、肯德基这些不过百年的洋快餐却能在有千年饮食文化的中国发展的那么好呢&#xff1f;是因为你不管何时何地在哪里吃味道都一样&#xff0c;而鱼香肉丝在我们中餐却可以吃出上…

C语言数据结构专题--顺序表(1基础)

前言 我们在对C语言有一定的了解之后&#xff0c;我们就可以开始数据结构的学习了&#xff0c;数据结构多用指针、结构体、动态内存开辟等知识&#xff0c;若对这些知识还不太了解的朋友&#xff0c;就需要加深其理解了&#xff0c;那么废话不多说&#xff0c;我们正式开始本节…

【C++学习】哈希的应用—位图与布隆过滤器

目录 1.位图1.1位图的概念1.2位图的实现3.位图的应用 2.布隆过滤器2.1 布隆过滤器提出2.2布隆过滤器概念2.3如何选择哈希函数个数和布隆过滤器长度2.4布隆过滤器的实现2.4.1布隆过滤器插入操作2.4.2布隆过滤器查找操作2.4.3 布隆过滤器删除 2.5 布隆过滤器优点2.6布隆过滤器缺陷…

小程序实现微信 【我的】界面

小程序实现仿微信 【我的】界面 一、简介 小程序实现仿微信 【我的】界面 采用 uni-app 实现&#xff0c;可以适用微信小程序、其他各种小程序以及 APP、Web等多个平台 具体实现步骤如下&#xff1a; 下载开发者工具 HbuilderX进入 【Dcloud 插件市场】 搜索 【小程序实现…

HTML基础知识详解(上)(如何想知道html的全部基础知识点,那么只看这一篇就足够了!)

前言&#xff1a;在学习前端基础时&#xff0c;必不可少的就是三大件&#xff08;html、css、javascript &#xff09;&#xff0c;而HTML&#xff08;超文本标记语言——HyperText Markup Language&#xff09;是构成 Web 世界的一砖一瓦&#xff0c;它定义了网页内容的含义和…