C语言 【基础语法】

一、编程环境搭建

  • 编译器:gcc

  • 集成开发环境:vscode

1.1 安装vscode

1.2 设置中文包 插件

1.3 设置C/C++扩展

安装 C/C++ Compile Run extensionC/C++ Extension Pack 扩展

 二、基础语法

2.1 第一个c语言程序

2.2 数据类型 

2.2.1 变量的语法(重点)

2.2.2 命名规则和规范

标识符是用户编程时使用的名字, 用于给变量、 函数、 类等命名

  • 命名规则

    • 规则:规则是一定要遵循,不遵循就报错

      • 由 数字, 字母, 下划线_ 组成

      • 不能使用数字开头

      • 不能使用关键字

      • 严格区分大小写

    • 关键字(这个不用记):已经占用的名字,用户起名不能和关键字重名

命名规范:可以不遵循,只是一个建议,建议见名知意

  • 风格:

    • 大驼峰

      • 每个单词首字母大写, 例如: MyFirstName

    • 小驼峰

      • 第二个单词开始首字母大写, 例如: myFirstName

    • 下划线命名

      • 每个单词之间使用下划线连接, 例如: my_first_name

2.2.3 char类型

char的本质就是一个1字节大小的整型,一个字符对应一个ASCII 编码数字

 2.2.4 bool类型

早期C语言没有布尔类型数据,以0代表逻辑假,非0代表逻辑真

C99标准定义了新的关键字_Bool,提供了布尔类型,或者也可以使用stdbool.h中的bool 

2.2.5 数据类型长度(大小)
  • bit(比特)

    • 一个二进制代表一位,一个位只能表示0或1两种状态。

  • Byte(字节)

    • 一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。

  • 使用sizeof查看数据长度,长度在不同平台是不一样。

2.2.6 可移植的类型

C语言在可移植类型 stdint.h 和 inttype.h 中规定了精确宽度整数类型,以确保C语言的类型在各系统内功能相同

 

2.2.7 常量

与变量不同,常量的值在程序运行时不会改变

三、数值表示

3.1 C语言如何表示相应进制数 

进制描述
十进制以正常数字1-9开头,如15
八进制以数字0开头,如017
十六进制以0x或0X开头,如0xf
二进制以0b或0B开头,如0b1111

3.2 数值存储方式

  • 在计算机系统中,数值一律用补码来存储

  • 对于正数,原码、反码、补码相同

  • 对于负数,其补码为它的反码加1

    • 负数的补码符号位不动,其他位求反,最后整个数加1,得到原码

原码

原码:一个数的原码就是它的二进制表示,其中最高位是符号位(0表示正,1表示负)。

十进制原码
50000 0101
100000 1010
00000 0000
-11000 0001
-51000 0101

原码表示法简单易懂,与带符号数本身转换方便,只要符号还原即可,但当两个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。 

反码

对于正数,反码与原码相同,对于负数,符号位不变,其它部分取反(1变0,0变1)。

十进制原码反码
50000 01010000 0101
100000 10100000 1010
+00000 00000000 0000
-11000 00011111 1110
-51000 01011111 1010
补码(重点)

在计算机系统中,数值一律用补码存储。

十进制原码反码补码
50000 01010000 01010000 0101
100000 10100000 10100000 1010
+00000 00000000 00000000 0000
-11000 00011111 11101111 1111
-51000 01011111 10101111 1011
  • 计算机的基石-补码

对于一个字节(8 位),他所能表示的范围有多大呢?所有可能编码如下,共 256种。

11111111
11111110
********
********
00000011
00000010
00000001
00000000
  • 3.4.2 补码的编码规则

如何来利用这些硬件的基础来表示我们需要的数据范围呢?就是编码。

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

  • 补码的运算

    1. 正整数的补码是其二进制表示,与原码相同

    2. 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0 变 1,1变 0)后加 1。

    【例 1】求-5 的补码。

    -5 => |-5| => 0000 0101 => 1111 1010 => 1111 1011

    【例 2】数 0 的补码表示是唯一的。

    0 => 0000 0000 => 1111 1111 => 0000 0000

3.3 转换关系

  1. 原码表示方法:最高位为符号位,1表示负数,0表示正数。其余比特位表示数值。

  2. 反码表示方法:正数的反码是其本身,负数的反码为在原码的基础上,符号位不变,其余位取反。

  3. 补码表示方法:正数的补码就是其本身,负数的补码为在原码的基础上,符号位不变,其余位取反,再+1(即在反码的基础上+1)。

四、程序的输入和输出 

4.1 输出(重点)

4.2 输入

使用scanf接收输入的内容

五、运算符

运算符就是在各种运算中起到特定作用的符号

5.1 算术运算符

5.2 赋值运算符

5.3 比较运算符

5.4 逻辑运算符

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3588 Android13 TvSetting 中增加 Usb 模式 Host/OTG 切换

前言 电视产品,客户要求在设置中设备偏好设置子菜单下增加一个USB模式切换菜单,一开始准备直接开整。但发现在开发者选项里就已经包含了一个USB模式 菜单了,只是没有 OTG HOST 这两选项,那就把这个菜单挪出来再增加一下就完事了,开整。 客户提供对比机图 效果图 framew…

OpenCV从入门到精通实战(六)——多目标追踪

基于原生的追踪 使用OpenCV库实现基于视频的对象追踪。通过以下步骤和Python代码,您将能够选择不同的追踪器,并对视频中的对象进行实时追踪。 步骤 1: 导入必要的库 首先,我们需要导入一些必要的Python库,包括argparse、time、…

Redis从入门到精通(十四)Redis分布式缓存(二)Redis哨兵集群的搭建和原理分析

文章目录 前言5.3 Redis哨兵5.3.1 哨兵原理5.3.1.1 集群的结构和作用5.3.1.2 集群监控原理5.3.1.3 集群故障恢复原理 5.3.2 搭建哨兵集群5.3.3 RedisTemplate5.3.3.1 搭建测试项目5.3.3.2 场景测试 前言 Redis分布式缓存系列文章: Redis从入门到精通(十三)Redis分…

回文链表题解

题目:回文链表 分析 这道题目标签为简单题,但是如果要实现下面的进阶过程不是很简单。 拿到题目一般来说就是赶时间,没有要求的情况下直接使用一个列表存储所有的数值,然后判断这个列表是否满足回文,这个思路是比较简…

【1524】java投票管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 投票管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

IO引脚服用和映射

什么是端口复用 STM32F4 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。在芯片数据手册或STM32F4XX参考手…

传感器融合 | 适用于自动驾驶场景的激光雷达传感器融合项目_将激光雷达的高分辨率成像+测量物体速度的能力相结合

项目应用场景 面向自动驾驶场景的激光雷达传感器融合,将激光雷达的高分辨率成像测量物体速度的能力相结合,项目是一个从多个传感器获取数据并将其组合起来的过程,可以更加好地进行环境感知。项目支持 ubuntu、mac 和 windows 平台。 项目效果…

ASP.NET基于TCP协议的简单即时通信软件的设计与实现

摘 要 即时通信(Instant Message),由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微…

Android --- Activity

官方文档-activity Activity 提供窗口,供应在其中多个界面。此窗口通常会填满屏幕,但也可能小于屏幕并浮动在其他窗口之上。 大多数应用包含多个屏幕,这意味着它们包含多个 Activity。通常,应用中的一个 Activity 会被指定主 Ac…

Linux数据库自动备份 - 定时任务发到百度云盘、坚果云、邮箱附件

前言 1. 坚果云的webdav云盘最好! (免费账号每月1G上传流量) 2. 不建议数据库备份文件发送到SMTP邮箱,因为对方服务器非常容易当做垃圾邮件处理,而且发信的SMTP账号会被封禁(实测163发到QQ邮箱被封&…

lambda捕获列表

lambda是C11新特性之一,优点是: 1.可以直接匿名定义目标函数或函数对象,不需要额外写一个函数 2.lambda是一个匿名的内联函数 捕获列表 总结:【】为值捕获,只读 【&】为引用捕获,可读可写

Midjourney指南 - 生成高分辨率图片(内容已更新至V5)

Midjourney 首先为每个作业生成一个低分辨率图片网格(2x2)。你可以在选择其中任一图片,使用 Midjourney upscaler 来增加尺寸并添加更多细节。有多种可用于放大图像的放大模型。 每个图像网格下方的按钮用于放大所选图像。U1 U2 U3 U4 注:upscaler 以下…

震惊金融界!巴克莱银行报告称去年投资诈骗激增29%

巴克莱银行 (Barclays) 发布的令人担忧的数据显示,在过去一年里,投资诈骗数量激增了 29%,震惊了金融界。这些诈骗给该银行的活期账户客户造成了巨大损失,占欺诈者损失资金的最高比例,平均索赔超过14,000英镑。 投资骗…

如何合理利用多个中国大陆小带宽服务器?

我们知道在中国大陆带宽单价非常昂贵,一个1Mbps 带宽的机子一年就得卖好几百人民币,这是不值当的,当然我们可以去低价漂阿里云、腾讯云的轻量服务器,99包年,但是带宽太小很难崩。 所以,我们必须构建一个能够…

怎么购买GPT api

怎么购买GPT api GPT API是由OpenAI提供的一种应用程序编程接口(API),允许开发者通过编程方式访问OpenAI开发的GPT(Generative Pre-trained Transformer)模型。GPT是一种基于深度学习的自然语言处理技术,主…

刷题之Leetcode19题(超级详细)

19.删除链表的倒数第N个节点 力扣题目链接(opens new window)https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗&#x…

爱普生计时设备AUTOMOTIVE RA8900CE DTCXO RTC

主要特点出场已校准带有DTCXO的RTC,并且内部集成晶体单元高精度: 3.4 ppm 40 to 85 C(9 s/月.)时钟输出:1 Hz.1024 Hz.32.768 kHzI 2 C Interface: Fast mode (400 kHz)The l2C-Bus is a trademark ofNXP Semiconductors供电电压: 2.5-5.5 V(main),1.6-5.5 V(备份电…

软考132-上午题-【软件工程】-沟通路径

一、定义 1-1、沟通路径1 沟通路径 1-2、沟通路径2 沟通路径 n-1 二、真题 真题1: 真题2: 真题3:

国外AI programmer 后来者SWE-agent,Devin不在孤寂

如果你正在寻找一种人工智能(AI)自主软件工程师Devin的替代品,它的强大程度足以与最近宣布的自主AI编码平台竞争。这位新手就是SWE-Agent!它是由普林斯顿大学NLP小组创造的开源人工智能程序员,旨在自主解决GitHub问题并实现最先进的性能,估值目标为20亿美元。SWE Agent在S…

jar包混淆

由于开发需要,不让甲方反编译出源代码。 命令如下: java -jar classfinal-fatjar-1.2.1.jar -file mis-admin.jar -libjars mis-ducg-3.5.0.jar -packages com.mis,cn.edu -pwd 123456 -Y 反编译软件编译的源码如下:直接null,成…