掘根宝典之C语言概述(main函数的多种写法,注释,标识符,ASCII码,转义字符)

目录

main函数的多种写法

1.void main()

2.main()

3.int main()

4.int main(void)

注释

标识符

ASCII码

转义字符

\n,\",\\,\a,\'

\b

\r

\t

\ddd

\xdd


main函数的多种写法

1.void main()

一些编译器允许这么写,但是所有的标准都未认可这种写法。因此,编译器不必接受这种形式,而且许多编译器都不能这么写

2.main()

C90勉强接受这种形式,但是C99和C11标准都不允许这么写。因此,即使你的编译器允许,也不要这么写

3.int main()

这是我们比较常用的一种形式,这是完全没有问题的

4.int main(void)

这也是常用的一种形式,我们可以使用这个

注释

在C语言中,可以使用两种方式进行注释:单行注释和多行注释。

  1. 单行注释:用双斜线"//"表示注释的开始,直到行末为止。例如:
// 这是一个单行注释

  1. 多行注释:用斜线和星号"/* */"括起来的部分表示注释的开始和结束。例如:
/*
这是一个多行注释
可以跨越多行
*/

当然它也可以用于单行注释

/* 也可以用于单行注释 */

注释用于解释代码的作用、逻辑、实现方式等,不会被编译器执行。注释可以提高代码的可读性和可维护性,方便其他人阅读和理解代码的意图。

标识符

在C语言中,标识符是用来表示变量、函数、数组、结构体等命名实体的名称。

标识符的命名规则如下:

  1. 标识符由字母、数字和下划线组成。
  2. 第一个字符必须是字母或下划线。
  3. 大小写敏感,即大小写字母被视为不同的字符。
  4. 标识符的长度没有限制,但是只有前63个字符有效。
  5. 不能使用C语言的关键字作为标识符。

一些有效的标识符示例:

  • 变量名:count, age, total_sum
  • 函数名:calculateSum, displayData
  • 数组名:numbers, matrix
  • 结构体名:Student, Employee

需要注意的是,良好的命名习惯可以提高代码的可读性和可维护性。建议使用有意义、描述性强的标识符,以便于他人理解和使用代码。

ASCII码

在C语言中,ASCII码是一种基于英语字母的字符编码标准,用于将字符转换为数字表示。每个字符对应一个整数值。

0-31是不可打印字符,只能通过转义字符里的\ddd和\xdd来打印

以下是一些常用字符的ASCII码值示例:

  • 字母A到Z的ASCII码值:65到90
  • 字母a到z的ASCII码值:97到122
  • 数字0到9的ASCII码值:48到57
  • 特殊字符:
    • 空格的ASCII码值:32
    • 换行符的ASCII码值:10
    • 回车符的ASCII码值:13
    • 句号的ASCII码值:46
    • 逗号的ASCII码值:44
    • 冒号的ASCII码值:58
    • 分号的ASCII码值:59

可以通过在C语言中使用char类型来表示字符,使用int类型来表示字符对应的ASCII码值。

以下是一个简单的示例,演示如何打印字符及其对应的ASCII码值:

#include <stdio.h>int main() {char ch = 'A';printf("Character: %c\n", ch);printf("ASCII value: %d\n", ch);return 0;
}

输出结果:

Character: A
ASCII value: 65

这个示例展示了字符'A'的ASCII码值是65。通过打印字符和对应的ASCII值,我们可以直观地看到它们之间的关联。

转义字符

在C语言中,转义字符是用来表示一些特殊字符的字符序列。它们以反斜杠(\)开头,并紧跟特定的字符,用于表示一些不可见的控制字符或具有特殊用途的字符。

以下是一些常用的转义字符:

  • \':单引号
  • \":双引号
  • \\:反斜杠
  • \n:换行符
  • \t:制表符(tab)
  • \r:回车符
  • \b:退格符
  • \f:换页符
  • \a:警报(蜂鸣)符
  • \0:空字符(NULL)

\n,\",\\,\a,\'

示例:

#include <stdio.h>int main() {printf("Hello\tWorld!\n");printf("My name is \"John\".\n");printf("This is a backslash: \\.\n");printf("This is a new line: \n.");printf("This is a beep sound: \a.\n");return 0;
}

输出结果:

Hello   World!
My name is "John".
This is a backslash: \.
This is a new line: .
This is a beep sound: .

这个示例演示了如何使用转义字符来打印特定的字符或产生特定的效果。注意,转义字符本身不会在输出中显示,它们只用于控制字符的行为。

\b

我们看看\b的作用

#include<stdio.h>
int main()
{printf("abc\bde");
}

结果是

abde

\r

在C语言中,\r是一个转义字符,用于表示回车符(carriage return)。它的作用是将当前输出位置的光标移到当前行的开头。

printf("abcde\rf");

结果是

f cde

下面是一个使用\r的示例:

#include <stdio.h>int main() {printf("Progress: 0%%");fflush(stdout);  // 刷新输出缓冲区,确保之前的内容被立即输出for (int i = 1; i <= 10; i++) {// 在同一行上更新进度条printf("\rProgress: %d0%%", i);fflush(stdout); // 刷新输出缓冲区,确保更新后的内容被立即输出// 假设在这里进行一些耗时操作}printf("\n");return 0;
}

运行上述示例代码,你会看到进度条每隔1秒更新一次,并显示进度的百分比。

注意,在使用\r时,需要手动使用fflush(stdout)函数来刷新输出缓冲区,这样才能确保更新后的内容立即显示在控制台上。

\t

在C语言中,\t是一个转义字符,用于表示制表符(horizontal tab)。它的作用是在输出文本时,在当前位置插入一个水平制表符,将光标移动到下一个制表符位置。通常是下一个8的倍数

下面是一个使用\t的示例:

#include <stdio.h>int main() {printf("Name:\tJohn\n");printf("Age:\t25\n");printf("Country:\tUSA\n");return 0;
}

运行上述示例代码,你会看到输出结果如下:

Name:   John
Age:    25
Country:        USA

我们再看一个例子

#include <stdio.h>int main() {printf("ab\tdef\tq\theheh");return 0;}

结果

ab      def     q       heheh

 ab到def之间有6个空格,def到q有5个,q到heheh有7个

注意,\t在输出时会按照一个固定的间距将文本对齐到相应的制表符位置。实际上,制表符在不同的终端或编辑器中可能会显示不同的宽度,因此输出可能会在不同的环境中呈现不同的对齐效果。

\ddd

在C语言中,\ddd是一种八进制转义序列,用于表示一个特定的ASCII字符。其中,ddd是一个3位的八进制数,范围从000到377(即0到255的十进制数)。

下面是一个使用\ddd的示例,将八进制数\141转义为对应的ASCII字符'a':

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

运行上述示例代码,你会看到输出结果为:

a

在C语言中,八进制转义字符主要用于表示一些不可打印的ASCII字符,如换行符(\012)或回车符(\015),或者用于在字符常量中表示一些特殊的字符。

\xdd

在C语言中,\x是一种十六进制转义序列,用于表示一个特定的ASCII字符。其中,dd是一个两位的十六进制数,范围从00到FF(即0到255的十进制数)。

下面是一个使用\xdd的示例,将十六进制数\x61转义为对应的ASCII字符'a':

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

运行上述示例代码,你会看到输出结果为:

a

在C语言中,十六进制转义字符主要用于表示一些不可打印的ASCII字符,如空格(\x20)或制表符(\x09),或者用于在字符常量中表示一些特殊的字符。

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

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

相关文章

大厂经验谈之OKR目标管理

前言 这是大厂经验谈系列第一篇文章,来看看互联网公司是如何制定和管理目标的。OKR是目前互联网公司经常采用的目标管理工具,最开始也是由国外著名公司推崇,比如Google、微软、亚马逊等,后面才逐步引入国内。既然是工具就有用得好和不好的地方,很多团队仍然把OKR当做KPI来…

vue2.0及起步(前端面试知识积累)

1、需要了解的vue概要知识 1、vue是什么&#xff1f; 一套用于构建用户界面的渐进式JavaScript框架。 为什么vue被称为是渐进式JS框架&#xff1f; 答&#xff1a;Vue允许开发者在不同的项目中以渐进式的方式使用它&#xff0c;这种渐进式表现在以下的方面&#xff1a; 逐步采…

这几个Python内置函数你都知道吗

divmod() divmod() 是一个 Python 内置函数&#xff0c;用于同时返回商和余数。它接受两个参数&#xff0c;第一个参数是被除数&#xff0c;第二个参数是除数&#xff0c;返回一个包含两个值的元组&#xff0c;第一个值是商&#xff0c;第二个值是余数。 示例用法如下&#…

【Simulink系列】——动态系统仿真 之 混合系统

声明&#xff1a;本系列博客参考有关专业书籍&#xff0c;截图均为自己实操&#xff0c;仅供交流学习&#xff01; 一、混合系统概述 由不同类型系统共同构成的系统称为混合系统&#xff01;仿真时必须考虑连续信号和离散信号的采样匹配问题&#xff0c;一般使用变步长连续求…

C++学习笔记:多态

C学习笔记:多态 什么是多态?多态的构成条件?C11中的final和override抽象类是什么?什么是虚表?多继承中的虚表 什么是多态? 多态是在不同继承关系的类对象&#xff0c;去调用同一函数&#xff0c;产生了不同的行为。 例如:学校在餐厅的某个档口为老师们提供了教师优惠,同样…

SpreadJS+vue3练手使用

SpreadJS的练手使用 // 首先在 package.json 这个文件里{"name": "app-admin","private": true,"version": "0.0.0","type": "module","scripts": {"dev": "vite",&quo…

【深度学习笔记】 3_13 丢弃法

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.13 丢弃法 除了前一节介绍的权重衰减以外&#xff0c;深度学习模型常常使用丢弃法&#xff08;dropout&#xff09;[1] 来应对过拟合…

阿里面试:最佳线程数,如何确定?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 如何确定系统的最佳线程数&#xff1f; 小伙伴 没有回…

机器学习深度解析:原理、应用与前景

随着人工智能的迅速发展&#xff0c;机器学习已经成为当今时代最为引人注目的技术之一。它不仅仅是一种技术或工具&#xff0c;更是一种推动社会进步、影响人类生活的重要力量。那么&#xff0c;什么是机器学习&#xff1f;它是如何工作的&#xff1f;又在哪些领域中发挥着不可…

阿里云服务器ECS u1实例性能怎么样?

阿里云服务器ECS u1实例&#xff0c;2核4G&#xff0c;5M固定带宽&#xff0c;80G ESSD Entry盘优惠价格199元一年&#xff0c;性能很不错&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;购买限制条件为企业客户专享&#xff0c;实名认证信息是企业用户即可&a…

介绍一下我们:久菜盒子工作室

大数据科学团队/全网可搜索的久菜盒子工作室 我们是&#xff1a;985硕博/美国全奖doctor/计算机7年产品负责人/医学大数据公司医学研究员/SCI一区2篇/Nature子刊一篇/中文二区核心一篇/都是我们 主要领域&#xff1a;医学大数据分析/经管数据分析/金融模型/统计数理基础/统计学…

编程笔记 Golang基础 028 结构体与JSON

编程笔记 Golang基础 028 结构体与JSON 一、JSON二、结构体转JSON&#xff08;序列化&#xff09;三、JSON转结构体&#xff08;反序列化&#xff09;小结 结构体与JSON之间的相互转换是现代软件开发中数据处理的基础工具&#xff0c;极大地简化了数据在不同层次、不同组件间的…

spring boot 集成科大讯飞星火认知大模型

一、安装依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

Educational Codeforces Round 160 (Rated for Div. 2) D. Array Collapse(笛卡尔树+DP)

原题链接&#xff1a;D. Array Collapse 题目大意&#xff1a; 给你一个长度为 n n n 的排列 p p p &#xff0c;排列的定义为 [ 1 , 2 , 3 , . . , n ] [1,2,3,..,n] [1,2,3,..,n] 中每个数都出现 恰好 一次。 你可以做 任意多次 这样的操作&#xff1a; 选出一个任意长度…

前端导出EXCEL

步骤解析 定义了一个名为 excelDown 的函数&#xff0c;它接受两个参数&#xff1a;res 和 type。res 是包含响应数据的对象&#xff0c;type 是要导出的文件类型。如果 type 未提供&#xff0c;则默认使用 Excel 文件的 MIME 类型。 export const excelDown (res, type) >…

unity导航网格无法烘培到台阶和斜坡

如图是我在b站学Unity导航网格时建的一个示例场景&#xff0c;本场景使用的为棱长1m的立方体&#xff0c;读者可以以此为参照度量其他物体大小。 可见导航网格根本无法烘焙到斜坡和台阶上&#xff0c;为解决问题我做了不少尝试&#xff0c;调整最大坡度和步高都没办法解决问题…

AI新纪元:可能的盈利之道

本文来源于Twitter大神宝玉&#xff08;dotey&#xff09;在聊 Sora 的时候&#xff0c;总结了 Sora 的价值和可能的盈利方向&#xff0c;我把这部分内容单独摘出来再整理一下。现在的生成式 AI 大家应该不陌生&#xff0c;用它总结文章、翻译、写作、画图&#xff0c;当然真正…

搭建私有Git服务器:GitLab部署详解

引言&#xff1a; 为了方便团队协作和代码管理&#xff0c;许多组织选择搭建自己的私有Git服务器。GitLab是一个集成了Git版本控制、项目管理、代码审查等功能的开源平台&#xff0c;是搭建私有Git服务器的理想选择。 目录 引言&#xff1a; 一、准备工作 在开始部署GitLab之…

Dockerfile和jar包不同目录处理

如果Dockerfile的全路径为/srm/myDockerfile/Dockerfile&#xff0c;而JAR文件位于/srm目录下&#xff0c;你可以在Dockerfile中使用相对路径引用JAR文件。以下是如何编写Dockerfile的示例&#xff1a; 假设你的项目结构如下&#xff1a; luaCopy code /srm |-- myDockerfile …

Map集合的遍历方式

遍历Map集合的几种方式 迭代器(Iterator)forlambdaStream 代码示例 package com.haimeng.Array;import java.security.Key; import java.util.HashMap; import java.util.Iterator; import java.util.Map;public class Lambda1 {public static void main(String[] args) {//…