初识C语言(一)

简介: 初识C语言(一)

1.什么是C语言

C语言是一门计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译,处理低级存储器,产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。


尽管C语言提供了许多低级处理的功能。但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可以在许多电脑上进行编译,甚至包括一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。


二十世纪八十年代,为了避免各个开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语言,称为ANSIC,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。


C89--->C90--->C99--->C11-->C19 ,C89和C99使用最多


C语言是一名面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同


其编译器主要有Clang,GCC,(VS 2022使用的)MSVC,Turbo C等


语言是沟通的一种方式,汉语、英语等是人和人交流的语言,而C语言、Java、C++等上千种计算机语言,是人和计算机交流的语言。


计算机语言的发展:


二进制--->汇编语言(助记符)--->B语言--->C语言--->...


C语言还广泛应用于底层开发,底层开发包括什么如下图所示


2.第一个C语言程序

1.创建项目

2.创建.c文件

3.编写代码

#include <stdio.h>
int main()
{
printf("hello world\n");//printf打印函数,在屏幕上打印 hello world 并换行
// '\n'是换行符
return 0;
}


写好的C语言代码只是文本信息,这些代码不能直接运行起来,需要经过编译和链接才能变为可执行程序 .exe。而Visual Studio 2022是集成开发环境,包含了编译,链接,运行,调试等功能。Ctrl+F5开始执行程序。


main函数是程序的入口,一个工程中main函数有且仅有一个。


每个函数都有返回值类型,这里是int 整形,所以ruturn 0;


0是一个整数,数据类型是整形,后面会讲到


3.数据类型

char       //字符型数据类型
short      //短整型
int        //整形
long       //长整型
long long  //更长的整形
float      //单精度浮点数
double     //双精度浮点数

C99中还包括

 bool   //布尔数据类型  返回值只有真或假
 long double


不同的数据类型是为了更好的存储不同的数据

计算机中的单位:

sizeof是一个关键字,用来计算后面数据所占字节的大小。下图为每个数据类型所占字节的大小,%d表示以十进制的方式打印。

C语言标准只是规定sizeof(long) >= sizeof(int),所以sizeof(long)在不同的编译器中大小可能不同,可能是4个字节也可能是8个字节。

char字符型数据在创建时需要加上‘ ’。

char ch = 'a';
int age = 18;
double weight = 62.5;


4.scanf函数报错

scanf函数是输入函数,要包含#include <stdio.h>输入输出流头文件。

scanf("输入变量的类型",&要输入的变量);
//%d 整形
//&取地址符,这里先记住这样用就行
//例:
int a = 0;//创建一个整形变量a,并赋初值为0
scanf("%d",&a);//输入a的值


如果大家使用的是微软提供的编译器,如visual studio 2022,在使用时scanf输入函数时会报错。

那个因为微软的编译器认为scanf函数不安全,建议使用scanf_s。但是scanf_s函数是由VS编译器提供的,只有VS编译器认识,其他编译器是不认识的,如果你的代码中使用了scanf_s函数,就不跨平台了。


所以有两种解决办法,第一种就是上面提到的使用scanf_s函数,第二种就是在代码第一行添加#define _CRT_SECURE_NO_WARNINGS 1,让编译器忽视这种不安全。对于初学者,还是推荐第二种方法,然后使用scanf函数。


为了不用每次创建新项目时都添加#define _CRT_SECURE_NO_WARNINGS 1,还有一个一劳永逸的方法:


在VS安装目录下,存在这样一个文件 newc++file.cpp 文件,可以用Everything这个软件来查找。我们通常情况下是不能直接修改这个文件的,我们可以先将这个文件复制到桌面,然后在这个文件第一行加上#define _CRT_SECURE_NO_WARNINGS 1,再复制替换掉原来路径的下的文件。这样每当创建一个新项目时第一行都会自己有这句话。


原理是你每次创建项目都会复制一份这个文件,然后在这个文件上编写代码,相当于一个文本文件,在这个文本上写代码,只不过它最开始是空的,你在第一行加了一句话,然后之后每次都会复制这句话。

相关文章
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
219 0
|
项目管理
设置甘特图依赖关系技巧:项目管理高效指南
甘特图中的依赖关系是项目管理的关键,指任务间需按特定顺序执行的关系。依赖关系通常分为4种:Finish-to-Start(最常见)、Start-to-Start、Finish-to-Finish和Start-to-Finish。Zoho Projects提供了直观的甘特图工具,允许用户轻松设置和管理这些依赖关系,确保项目按需顺畅进行。理解并正确配置任务间的依赖对于项目成功至关重要。
293 1
验签失败自查方案-支付宝接口常见错误系列
说明:   验签只需要使用到支付宝公钥 错误原因:   1.支付宝公钥使用错误导致   2.验签方法使用错误   3.参数错误导致,例如乱码,带自定义参数,编码格式。 自查流程(按照推荐流程检查)   第一步(重点检查):支付宝公钥使用是否错误参考这个帖子自查:[url]https://openclub.
3397 12
|
存储 监控 对象存储
海量、低成本历史日志分析实践
日志作为一种特殊的数据,对处理历史数据、诊断问题以及了解系统活动等有着非常重要的作用。对数据分析人员、开发人员或者运维人员而言,日志都是其工作过程中必不可缺的数据来源。 通常情况下,为节约成本,我们会将日志设定一定的保存时间,只分析该时间段内的日志,此类日志称之为“热”日志。
5783 0
|
11天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1237 5
|
10天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1217 87