1、初识C语言---“hello world”

news2024/12/23 19:05:39

文章目录

  • 1、什么是C语言呢?
  • 2、第一个C语言程序
  • 3、数据类型
  • 4、变量与常量
    • 4.1变量的定义方法
    • 4.2变量的命名规则
    • 4.3变量的使用
    • 4.4变量的作用域与生命周期
    • 4.5常量
  • 5.字符串+转义字符+注释
    • 5.1字符串
    • 5.2转义字符
    • 5.3注释

1、什么是C语言呢?

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。


张三说:这是什么啊,看不懂感觉好难。


C语言说:这些是一群科学家对我的定义,肯定要高大上,不然与他们的地位不匹配。后面你就会理解了,我是很厉害的哦。


张三说:所以你到底是什么东西,干什么的,我还是不知道。


C语言说:额。。。,好吧给你简单的介绍一下我自己。

在这里插入图片描述

C语言说:就像这个图片一样,我的诞生是为了让你们人类和计算机沟通,我是一门计算机语言。


C语言和我们学习的英语其实差不多,都是一种工具。选不同的工具与不同的事务进行交流

张三说:都是和同一个机器沟通,为啥有这么多语言呢?

这个等学习到后面你就会知道了。

C语言主要用于底层开发

在这里插入图片描述

2、第一个C语言程序

话不多说上程序。

#include<stdio.h>
int main()
{
	printf("hello world\n");
	return 0;
}

想必学过C语言的,都知道这个程序吧。--------它是将hello world打印到屏幕上

其实不过是C语言,几乎学习所有语言的第一个代码都是打印hello world

尽管你所知道的大神,他们的第一步都是在屏幕打印hello world。

所以你离大神又进了一步哟,努力学习,你也会是大神。

简单解释一些这个代码,要想真的理解还有些路要走。

1、#include<stdio.h>这个叫做预处理。

我当时学C语言的时候就很难受,预处理是啥呀,有啥用啊。反正就是不理解,非要把它弄懂,结果浪费了一节课,没有听课,也没有弄懂,尽管有人给你解释了,你也理解不了,因为现在是自己啥都不知道,这种好奇心是好的,但是你要分时候。这个学到后面就理解了,现在不需要理解,只要记住写代码的时候必须加上它


2、int main()这个叫主函数

为啥叫mian(),有什么用?我赶紧去查一查。

我想说在学习一个新的语言刚开始的时候,不要抱有好奇心要有一颗接纳心

不管我能不能理解,我先把他记住,等到后面有一定的基础后,你可以有好奇心。

不要担心,学到后面你就会知道了,现在没有办法说,你现在只要记得,你写的程序要写在main()函数中,才可以被执行—目前先记住

一个项目只能有且只有一个main()函数


3、{

} 这个叫做代码块

上面代码中的{ },我们需要将我们的代码写在{ }内部,这个记住。


4、printf()----打印函数

这函数到底是是啥呀?怎么老说函数,我咋啥都不知道?

你不知道很正常,你现在连C语言的语法都不知道,肯定不知道是啥?

我告诉你们,你们可以将它们先记住,会用,后面学完C语言你们就知道这些都是干啥的了。

printf()函数的作用,是将括号内用引号引起来的东西打印到电脑屏幕上


5、rertrn 0 — 返回值

与int main()中的int对应,return 0,返回0,表示程序正常执行


我知道此时此刻,你们心中有一万个问号,但是你先将它藏在心里,不要去想。

我们前期学习第一门计算机语言的时候,应该先知道如何使用,再去研究原理,现在不要去管为什么,因为告诉你你也听不懂。

3、数据类型

char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
//C语言有没有字符串类型?

在这里插入图片描述

在这里插入图片描述

不要看见这个就头疼,应该先去慢慢的记住他们。

我们已经知道printf()函数是将“ ”之间的内容打印到屏幕上

这里为什么打印的不是“%d\n”呢?而是数字

%d表示按整数打印,打印sizeof(“数据类型”) ---- 表示该类型的大小(单位是字节)

\n表示打印完一个后,换一行打印

C语言定义了许多的数据类型,数据类型又是什么呢?

这就好比数学中的数字吧,数学中有整数、小数、虚数等等

他们分别代表不同的意思

C语言中,也有许多类型 ----- 数据类型

char 就表示一个字符 表示‘ a’ ’ b’


short 表示短整型

整型我能理解,短整型什么意思

短就是它表示的整型范围比较小

假如你想表示100w,用short表示不了

用int就可以表示

当用int表示不了,就用long来表示

当用long表示不了,就用long long 来表示

他们可以表示整型

如何确定他们所能表示的的范围呢?为啥不直接用long long,这样就方便好多,只要是整数都可以?

先保留好自己的疑问,等在学学,你就不会再问了。


float表示单精度浮点数

double表示双精度浮点数

先不要管单精度、双精度。

浮点数,就是点(.)可以移动的数---->也就是小数。

这就是上面的那些数据类型的含义

同样,你们又有一万个问号,先忍忍,不要问。

4、变量与常量

生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)

有些值是可变的(比如:年龄,体重,薪资)

不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

4.1变量的定义方法

int age = 150;   // int 表示数据类型   age表示变量名(可以自己命名)   = 表示给这个变量赋值
float weight = 45.5f;
char ch = 'w';

4.2变量的命名规则

  • 只能由字母(包括大写和小写)、数字和下划线( _ )组成。
  • 不能以数字开头。
  • 长度不能超过63个字符。
  • 变量名中区分大小写的。
  • 变量名不能使用关键字
//变量命中只能有字母,数字,下划线_
//*不能出现再变量命中
int ad* c = 10;//错误

//变量名不能以数字开头
int 3ad = 20;//错误

//变量名不可以超过63个字符
int sahjdksadadashakdhakjhdsjkdhajkshdakjhdajkhdajkdhasjkdh = 30; // 错误

//变量名区分大小写
int a = 10;
int A = 20;//这是两个变量,不是同一个

//变量名不可以用关键字
int  int  = 20//错误,int是关键字

关键字都有那些呢?

在这里插入图片描述

也就这么多,不需要去记,学着学着你就都知道了。

4.3变量的使用

#include<stdio.h>
int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;
	printf("输入两个操作数:>");
	scanf("%d%d", &num1, &num2);
	sum = num1 + num2;
	printf("sum = %d\n", sum);
	return 0;
}

scanf()是一个函数,表述从键盘输入并且存入后面的变量中。

scanf(“%d%d”, &num1, &num2);表示你从键盘输入两个整数,存入到num1和num2。(记得有&)

第一个存入num1,第二个整数存储到num2。

printf()也是一个函数,表示讲后面的内容输出到电脑屏幕上

printf(“sum = %d\n”, sum);遇到%d,以整数的形式将sum输出到屏幕上。(记得没有&)

在这里插入图片描述

4.4变量的作用域与生命周期

作用域:

作用域是程序设计概念,通常来说,就是一个变量可以有效使用的范围

1.局部变量的作用域:是变量所在的局部范围。

2.全局变量的作用域:是整个工程。

生命周期:

变量的生命周期是指从变量的创建变量的销毁的一个时间段

1.局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

2.全局变量的生命周期是:整个程序的生命周期

作用域与生命周期一个空间上的限制一个是时间上的限制,两个还是有区别的

int main()
{
	int a = 10;
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		int b = 0;
		b = b + i;
	}
}

例如上面的这个代码:

a 的作用域就在main函数中。

b 的作用域在for()循环中。

a 的生命周期是从int a创建开始,到出main()函数结束。

b 的生命周期是从int b创建开始,到出for()循环结束。

4.5常量

C语言的常量和变量的定义的形式有所差异

C语言中的常量分为以下几种:

  • 字面常量
int main()
{
    3.14;//字面常量
	1000;//字面常量
}
  • const修饰的常变量
int main()
{
	//const 修饰的常变量	
	const float pai = 3.14f;   //这里的pai是const修饰的常变量
	pai = 5.14;//是不能直接修改的!(error)
}

这里的pai的值不可以改变,故拥有常量的属性。
但是它的本质仍然为变量
  • #define定义的标识符常量
//#define的标识符常量 
#define MAX 100 
int main()
{
    printf("max = %d\n", MAX);
    
    return 0;
}
  • 枚举常量
//举例
enum Sex
{
	MALE,
	FEMALE,
	SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量

int main()
{
    printf("%d\n", MALE);    //0
	printf("%d\n", FEMALE);  //1
	printf("%d\n", SECRET);  //2
	//注:枚举常量的默认是从0开始,依次向下递增1的
    
    retrun 0;
}

5.字符串+转义字符+注释

5.1字符串

“hello” 这里省略了’/0’

这里用双引号引起来的一串字符称为字符串字面值(字符串)

在这里插入图片描述

为什么第二个会输出烫烫烫呢?

这是由于printf在按照%s输出的时候,直到遇到‘\0’才停止。

而arr1中,默认在最后面加入了一个’\0’

而arr2中,没有加入’\0’,所以它所打印的是不确定的,直到遇到’\0’。

而arr3中,在数组中加入’\0’就好了。

在这里插入图片描述

5.2转义字符

如果我们要在屏幕上打印:c:\code\test.c

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

在这里插入图片描述

出现了这种结果,我们比较难理解,此时我们就需要去了解一下转义字符

转义字符:就是字符的意义改变了。

转义字符有哪些

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

现在应该明白为啥打印出来和自己想的不一样了把。

正确代码

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

问题1:在屏幕上打印一个单引号’,怎么做?
问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?

#include <stdio.h>
int main()
{
    //printf("%c\n",''');错误
    //printf("%c\n",""");错误
	printf("%c\n", '\'');
	printf("%s\n", "\"");
	return 0;
}

5.3注释

1.代码中有不需要的代码可以直接删除,也可以注释掉。

2.代码中有些代码比较难懂,可以加一下注释文字。

例如:

#include <stdio.h>
int Add(int x, int y)
{
	return x + y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
	//C++注释风格
    //printf("%d\n", Add(1, 2));
	printf("%d\n", Add(1, 2));
	return 0;
}

注释风格:

第一种:C语言风格注释/* xxxxxx */

​ 有缺陷:不能嵌套注释

在这里插入图片描述

第二种:C++风格注释:// xxxxxx

​ 可以注释一行也可以多行

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

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

相关文章

Spring Boot学习篇(二)

Spring Boot学习篇(二) 1.spring boot中的拦截器 1.1 在com包.zlz包下面创建interceptor包,包的目录结构如下所示 1.2 在interceptor包下面创建MyInterceptor1和MyInterceptor2类(便于测试顺序) 1.2.1 MyInterceptor1类 package com.zlz.interceptor;import org.springfram…

集合家庭作业

Homework01 按要求实现: (1)封装一个新闻类&#xff0c;包含标题和内容属性&#xff0c;提供get、set方法,重写toString方法&#xff0c;打印对象时只打印标题; (2)只提供一个带参数的构造器&#xff0c;实例化对象时&#xff0c;只初始化标题;并且实例化两个对象: 新闻一:…

【C数组】详解数组

数组前言一、一维数组的创建和初始化&#xff08;一&#xff09;数组的创建1.数组的概念和创建方式2.变长数组&#xff08;二&#xff09;数组的初始化&#xff08;三&#xff09;一维数组的使用&#xff08;四&#xff09;一维数组在内存中的存储二、二维数组的创建和初始化&a…

rabbitmq基础7——队列和消息过期时间设置、死信队列、延迟队列、优先级队列、回调队列、惰性队列

文章目录一、过期时间1.1 针对队列设置1.2 针对消息设置二、死信队列2.1 死信交换器2.2 死信队列原理2.3 延迟队列&#xff08;特殊用法&#xff09;三、优先级队列3.1 监控页面创建优先级队列3.2 监控页面创建优先级消息四、回调队列4.1 RPC的定义4.2 PRC工作机制4.3 监控页面…

java本地socket服务端暴露至公网访问【内网穿透】

Java 服务端demo环境 jdk1.8 框架:springbootmaven 开发工具:IDEA 在pom文件引入第三包封装的netty框架maven坐标 <dependency><groupId>io.github.fzdwx</groupId><artifactId>sky-http-springboot-starter</artifactId><version>0.…

叮叮当~~叮叮当~~|您有一份白玉兰酒店圣诞节豪礼等待抱走!

不知不觉2022年已经临近尾声 全国各地都已经放开了 相信有很多小伙伴在这一年 都没有好好的出来浪一浪 在即将到来的圣诞节 各地的圣诞玩乐都已经齐齐亮相 同时 白玉兰酒店客房 也已迎来了圣诞系列主题 是时候计划一场完美的圣诞之旅了 兰小姐为您准备了丰富多彩的圣…

【苹果家庭群发推送】软件安装Apple推送是一种基于IMESSAGE平台的新信息推送功效的营销软件

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

DevOps-7:Jenkins API介绍

前言&#xff1a; 为什么要使用Jenkins的API&#xff1f; 我在使用Jenkins的过程中&#xff0c;觉得Jenkins的UI还是有不少问题的&#xff1a; UI性能差&#xff0c;尤其是有一些任务在构建中时&#xff0c;UI非常卡顿&#xff0c;等个十来秒都正常&#xff0c;极端时甚至会崩…

LeetCode 221. 最大正方形

LeetCode 221. 最大正方形 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1",&quo…

【OpenCV-Python】教程:8-1 图像去噪 Image Denoising

OpenCV Python 图像去噪 Image Denoising 【目标】 非局部均值去噪算法去除图像中的噪声。 cv2.fastNlMeansDenoising() , cv2.fastNlMeansDenoisingColored() etc. 【理论】 在前面的章节中&#xff0c;我们已经看到了许多图像平滑技术&#xff0c;如高斯模糊&#xff0c…

1、MYSQL基础(DDL DML DCL)

&#xff08;1&#xff09;关于字段修改 change和modify的异同&#xff1a; 同&#xff1a;可以修改表的定义 异&#xff1a;change需要写两次列名&#xff0c;不方便&#xff0c;但是change可以修改表名&#xff0c;modify不可 &#xff08;2&#xff09;多表更新&#xff…

店铺如何快速实现数字化管理?不妨参考一下管理系统

百数店铺管理系统主要是以门店管理为核心&#xff0c;该应用管理涵盖商品、订单、库存、客户、采购、财务、营销等功能体系&#xff0c;维度数据分析&#xff0c;智能指导门店经营&#xff0c;账目清晰一目了然&#xff0c;店铺经营更高效。 1、销售看板 该分析报表里通过销售…

手把手教你玩转 Excel 数据透视表

1. 什么是数据透视表 数据透视表是一种可以快速汇总、分析大量数据表格的交互式分析工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视&#xff0c;并建立交叉表格&#xff0c;用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。 使用数据透视表…

【Vue + Koa 前后端分离项目实战6】使用开源框架==>快速搭建后台管理系统 -- part6 前端实现期刊列表管理【增删查改】

要把努力当成一种习惯&#xff0c;而不是一时热血。 对应后端部分章节回顾&#xff1a; 【Vue Koa 前后端分离项目实战4】使用开源框架&#xff1e;快速搭建后台管理系统 -- part4 后端实现【增删改查】功能_小白Rachel的博客-CSDN博客 目录 一、前端项目准备 1.运行项目 …

支持百问网T113 D1-H D1s V853 V851s 等开发板 使用 Tina Linux NOR Flash文件系统 开发指南

此文章内容适用于 百问网T113 D1-H D1s V853 V851s 等开发板&#xff0c;开发板详情请访问 www.100ask.net 。 1 简介 编写目的 此文档描述Sunxi NOR 模块的使用方法&#xff0c;为相关人员调试提供指导 适用范围 boot0: 适用于brandy-2.0u-boot: 适用于u-boot-2018kernel: …

记录内值排序

记录内值排序 【问题】 could anyone please suggest a way to accomplish this. i have a table which consists of six columns : Table name : orders num1 number, num2 number , num3 number , num4 number , num5 number , num6 number there is a routine which fi…

修改后的代码只进行了git add操作不小心给他恢复了怎么找回来

一份干净的代码在main.js里加了一行console.log(666)&#xff0c;并且只进行了git add 然后不小心给他reset了&#xff01; git reset --hard哦豁&#xff0c;没了&#xff1f; 别急一样可以恢复&#xff0c;我们先执行 git fsck --lost-found然后我们去项目的.git下找到这个…

初级软件测试面试会问什么 除了常见问题,技术题也是重点

众所周知&#xff0c;面试是我们进入一个公司的门槛&#xff0c;面试者只有通过了面试才能进入公司&#xff0c;因此&#xff0c;很多新手测试人就想要知道&#xff0c;自己去面试初级软件测试的岗位&#xff0c;HR们都会问些什么样的问题&#xff1f;自己可以从哪些方面做准备…

多线程顺序运行的 4 种方法

1、在子线程中通过join()方法指定顺序 通过join()方法使当前线程“阻塞”&#xff0c;等待指定线程执行完毕后继续执行。 举例&#xff1a;在线程thread2中&#xff0c;加上一句thread1.join()&#xff0c;其意义在于&#xff0c;当前线程2运行到此行代码时会进入阻塞状态&…

FineReport填报报表常用属性方法

1、去除填报页面选中单元格时的黑色边框 // 加载结束事件 _g().curLGP.hideSelectFrame(); 2、 获取单元格焦点 预览填报报表时&#xff0c;希望页面加载完成后&#xff0c;自动将光标定位在某个控件中&#xff0c;可以直接编辑。 // 获取A2单元格 var cell _g().curLGP.getT…