【初阶二】认识C语言—上

【初阶二】认识C语言—上

  • 1.数据类型
  • 2.变量
  • 3.常量
  • 4.字符串
  • 5.转义字符
  • 6.注释
  • 7.选择语句

认识C语言讲的是C语言的基础知识,目的是让大家认识这些知识,后续文章会把这些知识深入讲解,知识点很多,篇幅原因分为上下两篇

1.数据类型

每个数据类型都有自己的大小,因此先了解一下计算机的单位
在这里插入图片描述

下面就是C语言的数据类型,种类众多的类型目的是方便表示生活中的各种值 在这里插入图片描述

在vs2022的源文件中输入以下代码便可查看数据类型的字节数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{printf("%d\n", sizeof(char));        //输出1printf("%d\n", sizeof(short));       //输出2printf("%d\n", sizeof(int));         //输出4printf("%d\n", sizeof(long));        //输出8printf("%d\n", sizeof(long long));   //剩下的可自验printf("%d\n", sizeof(float));printf("%d\n", sizeof(double));printf("%d\n", sizeof(long double));return 0;
}

2.变量

生活中有很多不变的值,例如:圆周率、血型、身份证号,称之为常量
有些值是可变的,例如:身高、体重、年龄,称之为变量

在这里插入图片描述
ch、b、year是我们给不同类型的变量取的名字,变量的值初始化后是可以改变的

变量命名规则:
在这里插入图片描述

变量的分类:

  • 定义在{}内的变量称之为局部变量
  • 定义在{}外的变量称之为全局变量
#include <stdio.h>
int year = 2019;//全局变量
int main()
{int local = 8;//局部变量int year = 2022;//局部变量printf("year = %d\n", year);//打印哪个?return 0;
}

全局变量和局部变量同名,优先使用局部变量

变量的作用域:变量所在的局部范围。(在{}内起作用,出了{}就销毁)(全局变量作用域是整个工程)
变量的生命周期:变量的创建到变量的销毁之间的时间段
局部变量的生命周期是:进入作用域时开始,出作用域时结束。
全局变量的生命周期是:整个程序的生命周期

3.常量

常量的定义跟变量有所区别,可以分为以下几种情况:

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
#include <stdio.h>
enum People                          
{       MALE,  //括号中的MALE,FEMALE,child是枚举常量FEMALE,//如果不给MALE赋初始值,它默认为0(FEMALE为1,child为2,以此类推)child  //枚举常量只能初始化赋值(或者不初始化)
};         //枚举常量初始化后再改变它的值会报错
//
int main()
{//字面常量3.14;1000;//const修饰的常变量const float weight = 50.5;//这里的weight是const修饰的常变量weight = 55.5;//const修饰的常变量是不能直接修改的//但const修饰的常变量在C语言中只是在语法层面限制了//weight本质上还是一个变量,所以叫常变量//#define定义的标识符常量#define NUM 10//这里NUM被定义为常量10,以后的程序中出现NUM将自动替换为10,且不可修改printf("max = %d\n", NUM);//打印结果为10//枚举常量printf("%d\n", MALE);//打印结果为0

4.字符串

所谓字符串就是在“ ”内的一串字符,例如“hello world”就是一个字符串 字符串的结束标志是一个’\0’的转义字符(’ ‘内的是字符),不算做字符串内容,所以字符串表面看不到’\0’,但在计算字符串长度时’\0’是结束标志

'\0’重要性,例1:

#include <stdio.h>
int main() //通过下面代码的打印结果观察'\0'的重要性
{char arr1[] = "PacifyTheNorth";char arr2[] = {'P', 'T', 'H'};char arr3[] = {'P', 'T', 'H''\0'};printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", arr3);return 0;
}

在这里插入图片描述

arr2结尾处没有’\0’作为结束标志,当printf函数读到’H’时不会停止,它会一直往后走直到找到’\0’,所以打印出现了烫烫烫烫的乱码,arr1和arr3结果正常

'\0’重要性,例2:

#include <stdio.h>
#include<string.h>//使用strlen需要包含这个头文件
int main()//通过下面代码的打印结果观察'\0'的重要性
{char arr1[] = "PacifyTheNorth";char arr2[] = {'P', 'T', 'H'};char arr3[] = {'P', 'T', 'H''\0'};int a = strlen(arr1);int b = strlen(arr2);int c = strlen(arr3);printf(" %d\n %d\n %d\n", a, b, c);return 0;
}

在这里插入图片描述

arr1和arr3结果正常,但arr2打印输出了一个随机数字35,不同的电脑或不同的编译器会得到不同答案,这台电脑是到第35位才找到’\0’结束

5.转义字符

观察打印结果

#include <stdio.h>
int main()
{printf("c:\code\test.c\n");return 0;
}

在这里插入图片描述
没按照我们预期打印出c:\code\test.c\n,原因就是这个字符串中包含了多个转义字符

下面是一些常见的转义字符:

  • \? 在书写连续多个问号时使用,防止他们被解析成三字母词
  • \’ 用于表示字符常量’
  • \“ 用于表示一个字符串内部的双引号
  • \ 用于表示一个反斜杠,防止它被解释为一个转义序列符
  • \a 警告字符,蜂鸣
  • \b 退格符
  • \f 进纸符
  • \n 换行
  • \r 回车
  • \t 水平制表符
  • \v 垂直制表符
  • \ddd d d d表示1~3个八进制的数字, 如: \130 表示字符X
  • \xddd d表示2个十六进制数字, 如: \x30 表示字符0

当我们看完这些转义字符的特点之后,我们就能打印出c:\code\test.c\n了
在这里插入图片描述

6.注释

注释的作用:

  • 不需要代码可以不删除,注释掉后不影响运行
  • 有些代码较难理解,可以注释中文方便理解和回顾

在这里插入图片描述
代码前面加了//就会变成注释

7.选择语句

C语言中的选择语句分为三种

  • if语句
  • switch
  • 条件运算符 A ?B : C

if语句:

#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);if(num == 1)//if后面括号内容为真就执行if下面语句,为假就跳到else执行else下面语句{prinf("坚持,金麟岂是池中物,一遇风云便化龙\n");}else//就是num不等于1的情况{printf("放弃,关山难越,谁悲失路之人\n");}return 0;
}

switch语句:

#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);switch (num)//num为1就跳到case 1语句,为0就跳到case 0语句{case 0:printf("关山难越,谁悲失路之人");break;case 1:printf("金麟岂是池中物,一遇风云便化龙");break;}return 0;
}

条件运算符 A ?B : C

#include <stdio.h>
int main()
{int num = 0;printf("你会坚持学习吗?(选择0放弃 or 1坚持):>");scanf("%d", &num);int N = num ? 5 : 10;//num为真返回5,为假返回10if (N == 5){printf("金麟岂是池中物,一遇风云便化龙");}else if(N==10){printf("关山难越,谁悲失路之人");}return 0;
}

##8.循环语句

C语言的循环语句有while语句、if语句和do…while语句,其他以后讲解,让我们先用while语句感受循环

//while循环的实例
#include <stdio.h>
int main()
{printf("加入ETO\n");int line = 0;while(line<=10)//当line小于等于10时,会不断执行下面的语句,当line大于10时就会跳出while循环{line++;printf("借助外来力量拯救腐朽的人类社会!\n");}if(line>10)printf("消灭人类暴政,世界属于三体!\n");return 0;
}

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

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

相关文章

线性DP 区间DP C++

线性DP 题一 数字三角形 解题思路 三角形内的某个点&#xff0c;可以从这个点的左上方或右上方来到这个点&#xff0c;因此有状态转移方程&#xff1a; f[i, j] max(f[i - 1, j - 1] a[i][j], f[i - 1][j] a[i][j]) 代码实现 #include<iostream> #include<algor…

D68【python 接口自动化学习】- python基础之数据库

day68 Python执行SQL语句 学习日期&#xff1a;20241114 学习目标&#xff1a;MySQL数据库-- 137 Python执行SQL语句插入到数据库 学习笔记&#xff1a; commit提交 自动commit 总结 commit提交&#xff1a;pymysql库在执行对数据库有修改操作的行为时&#xff0c;是需要通…

【项目组件】第三方库——websocketpp

目录 第三方协议&#xff1a;websocket websocket简介 websocket特点 websocket协议切换 websocket协议格式段 websocketpp库介绍 endpoint server connection websocketpp库搭建服务器流程 基本框架实现 业务处理回调函数的实现 http_callback open_callback …

超越传统:探索ONLYOFFICE的革命性办公新纪元

目录 &#x1f341;引言 &#x1f341;一、ONLYOFFICE产品简介 &#xff08;一&#xff09;、介绍 &#xff08;二&#xff09;、基本功能简介 &#x1f341;二、核心功能具体介绍 1、编辑操作 2、文本与段落&#xff1a; 3、样式与图形&#xff1a; 4、表格与图表&…

python解析网页上的json数据落地到EXCEL

安装必要的库 import requests import pandas as pd import os import sys import io import urllib3 import json测试数据 网页上的数据结构如下 {"success": true,"code": "CIFM_0000","encode": null,"message": &quo…

115页PDF | 埃森哲_XX集团信息化能力成熟度评估及能力提升方案(限免下载)

一、前言 这份报告是埃森哲_XX集团信息化能力成熟度评估及能力提升方案&#xff0c;报告首先分析了集团的战略规划&#xff0c;包括调整优化期、转型升级期和跨越发展期的目标&#xff0c;然后识别了集团面临的内部挑战和外部压力&#xff0c;如管控体系不完善、业务板块多样化…

PostgreSQL中表的数据量很大且索引过大时怎么办

在PostgreSQL中&#xff0c;当表的数据量很大且索引过大时&#xff0c;可能会导致性能问题。以下是一些优化索引和表数据的方法&#xff1a; 1. 评估和删除不必要的索引 识别未使用的索引&#xff1a;使用pg_stat_user_indexes和pg_index系统视图来查找未被使用的索引&#x…

智谱AI清影升级:引领AI视频进入音效新时代

前几天智谱推出了新清影,该版本支持4k、60帧超高清画质、任意尺寸&#xff0c;并且自带音效的10秒视频,让ai生视频告别了"哑巴时代"。 智谱AI视频腾空出世&#xff0c;可灵遭遇强劲挑战&#xff01;究竟谁是行业翘楚&#xff1f;(附测评案例)之前智谱出世那时体验了一…

7. djang5 官网 polls app (关于管理员站点)

本教程从 第 6 个教程 结束的地方开始。我们将继续开发 web-poll 应用程序&#xff0c;并专注于自定义 Django 自动生成的管理网站&#xff0c;这一点我们在 第 2 个教程 中首次进行了探索。 自定义管理表单 在 polls/admin.py 中修改&#xff1a; from django.contrib impo…

Elasticsearch基本概念及使用

Elasticsearch 是一个开源的、分布式的全文搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它提供了快速的搜索能力&#xff0c;支持大规模的数据分析&#xff0c;广泛应用于日志分析、全文搜索、监控系统和商业智能等领域。ES操作指令是基于restAPI构建&#xff0c;也就…

无插件H5播放器EasyPlayer.js网页web无插件播放器vue和react详细介绍

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…

Ubuntu 的 ROS 操作系统安装与测试

引言 机器人操作系统&#xff08;ROS, Robot Operating System&#xff09;是一个用于开发机器人应用的开源框架&#xff0c;它提供了一系列功能丰富的库和工具&#xff0c;能够帮助开发者构建和控制机器人。 当前&#xff0c;ROS1的最新版本为Noetic Ninjemys&#xff0c;专为…

入门网络安全工程师要学习哪些内容(详细教程)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火&#xff0c;这个行业因为国家政策趋势正在大力发展&#xff0c;大有可为!但很多人对网络安全工程师还是不了解&#xff0c;不知道网…

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理&#xff08;tor、proxy、relay等&#xff09;进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等&#xff0c;同时也可以对用户行为进行分析&#xff…

【C#设计模式(10)——装饰器模式(Decorator Pattern)】

前言 装饰器模式可以在运行时为对象添加额外的功&#xff0c;而无需修改原始对象的代码。这种方式比继承更加灵活。 代码 //蛋糕类&#xff08;抽象类&#xff09; public abstract class Cake {public abstract void Create(); } //奶油蛋糕类 public class CreamCake : Cak…

【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键

基本信息 原文标题&#xff1a;Attention Is All You Need for LLM-based Code Vulnerability Localization 原文作者&#xff1a;Yue Li, Xiao Li, Hao Wu, Yue Zhang, Xiuzhen Cheng, Sheng Zhong, Fengyuan Xu 作者单位&#xff1a;National Key Laboratory for Novel So…

python包管理工具pip和conda的使用对比

python包管理工具pip和conda的使用对比 总述1. pip使用2. conda注意虚拟环境之间的嵌套&#xff0c;这个会导致安装包后看不到包&#xff0c;实际是安装到了base环境里 未完待续 总述 pip相对于conda,对应包的依赖关系管理不强&#xff0c;坏处是容易造成包冲突&#xff0c;好…

Diff 算法的误判

起源&#xff1a; for循环的:key的值使用index绑定&#xff0c;当循环列表条目变化更新&#xff0c;导致虚拟 DOM Diff 算法认为原有项被替换&#xff0c;而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…

Python与其他语言比较·练习题 --- 《跟着小王学Python》

Python与其他语言比较练习题 — 《跟着小王学Python》 《跟着小王学Python》 是一套精心设计的Python学习教程&#xff0c;适合各个层次的学习者。本教程从基础语法入手&#xff0c;逐步深入到高级应用&#xff0c;以实例驱动的方式&#xff0c;帮助学习者逐步掌握Python的核心…

如何修改npm包

前言 开发中遇到一个问题&#xff0c;配置 Element Plus 自定义主题时&#xff0c;添加了 ElementPlusResolver({ importStyle: "sass" }) 后&#xff0c;控制台出现报错&#xff0c;这是因为 Dart Sass 2.0 不再支持使用 !global 来声明新变量&#xff0c;虽然当前…