首页 > 其他分享 >【C】C语言常见概念~

【C】C语言常见概念~

时间:2024-10-10 12:47:49浏览次数:3  
标签:语句 main return int 常见 C语言 概念 printf include

C语言常见概念

转义字符

转义字符,顾名思义,转变原来意思的字符
比如

#include <stdio.h> 
int main()
{
	printf("abcndef");
	return 0;
}

输出的结果为:
在这里插入图片描述
将代码修改一下:

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

输出的结果变为:
在这里插入图片描述
\n就是一个转义字符,表示换行

常见的转义字符如下:

\?
在书写连续多个问号时使用,防止他们被解析成三字母词,在新的编译器上没法验证了
\’
用于表示字符常量’
\"
用于表示一个字符串内部的双引号
\\
用于表示一个反斜杠,防止它被解释为一个转义序列符
\a
警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生
\b
退格键,光标回退一个字符,但不删除字符
\f
换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v
\n
换行符
\r
回车符,光标移到同一行的开头
\t
制表符,光标移到下一个水平制表位,通常是下一个4/8的倍数
\v
垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列

下面2种转义字符可以理解为:字符的8进制或者16进制表示形式:

\ddd:d d d表示1~3个八进制的数字
如:\130 表示字符X

\xdd:d d表示2个十六进制数字。
如:\x30 表示字符0

\e
null 字符,代表没有内容,\e 就是\ddd这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0.

三字母词

??) 输出为 ]
??( 输出为 [
例如

#include <stdio.h>
int main(){
	printf("(are you ok??)");
	return 0;
} 

输出应为:( are you ok]
但实际:
在这里插入图片描述
因为当前的编译器已经不再支持三字母词

正确的写法应该为:

#include <stdio.h>
int main(){
	printf("(are you ok\?\?)");
	return 0;
} 

打印单引号:

错误示范:

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

这是因为中间的单引号与左面的单引号结合成一对
故,应该将中间的单引号转义

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

输出结果为一个单引号:
在这里插入图片描述
同理,打印双引号:

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

在这里插入图片描述

打印\

当我们想打印:c:\test\ddd\test.c的时候,若编写代码如下:

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

就会发现输出很奇怪:
在这里插入图片描述
这是因为编译器识别的时候,将\当成了转义字符

正确代码如下:

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

这时候,我们就得到了想要的输出:
在这里插入图片描述

\b

#include <stdio.h>
int main(){
	printf("abcdef");
	getchar();//读取一个字符 
	return 0;
} 

此时光标位置:
在这里插入图片描述

添加\b后:

#include <stdio.h>
int main(){
	printf("abcdef\b");
	getchar();//读取一个字符 
	return 0;
} 

在这里插入图片描述

如果在这之后打印一个x:

#include <stdio.h>
int main(){
	printf("abcdef\b");
	printf("x");
	getchar();//读取一个字符 
	return 0;
} 

则输出:
在这里插入图片描述
会发现:x将f覆盖

\t

#include <stdio.h>
int main(){
	printf("a\taa\taaa\taaaa\txx");
	
	return 0;
} 

输出为:
在这里插入图片描述
可以看出:从开始打印a到打印aa之前,为8个字符

也就是说,a和aa之间跳过了七个字符,aa和aaa之间跳过了六个字符…以此类推

\ddd

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

在这里插入图片描述
说明,八进制中130代表X
怎么来的呢?
从末位开始,八进制情况下,分别代表8的0次幂,8的1次幂…依次递增
esp:130:164 + 38+ 0*1=88, 而ASC码值88对应的就是X字符

\0就是\ddd形式的转义字符

\xdd

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

在这里插入图片描述
十六进制中,30对应的十进制数字,与八进制同理,为:
316+01=48
而ASC码值为48对应的是0
故打印结果为0

一个练习:

#include <stdio.h>
#include <string.h>
int main(){
	//int len=strlen("abc");
	//a b c \0 
	//strlen统计的是字符串中\0之前的字符个数 ,不算\0 
	//8进制的数字是0~7组成的
	//16进制的数字是由0~9+A~F表示(0~15) 
	int len=strlen("c:\test\abc\182\test.c") ;
	printf("%d",len);
	return 0;
} 

练习:数一数这个字符串有多少个字符

在这里插入图片描述
故为,18个

语句和语句的分类

C语言的代码是由一条一条的语句构成,C语言中的语句可分为五类
1.空语句
2.表达式语句
3.函数调用语句
4.复合语句
5.控制语句

空语句

#include <stdio.h>
int main(){
	;
	return 0;
} 

表达式语句

#include <stdio.h>
int main(){
	3+4;
	return 0;
	} 

函数调用语句

#include <stdio.h>
int main(){
	printf("hehe");
	return 0;
} 

复合语句(代码块)

#include <stdio.h>
int main(){
	{}
	return 0;
} 

控制语句

#include <stdio.h>
int main(){
	//if switch for....
	return 0;
} 

控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构: 顺序结构、选择结构、循环结构),它们由特定的语句定义符组成

C语言有九种控制语句。可分成以下三类:
1.条件判断语句也叫分支语句:if语句、switch语句
2.循环执行语句: do while语句、while语句、for语句
3.转向语句: break语句、goto语句、continue语句、return语句

注释

注释是对代码的说明编译器会忽略注释,也就是说,注释对实际代码没有影响。注释是给程序员自己,或者其他程序员看的

好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注当然不写注释可能会让后期阅读代码的人抓狂

注释的2种形式

/**/的形式

第一种方法是将注释放在/* … */之间,内部可以分行

/*   注释    */

/*
     这是一行注释
*/ 

这种注释可以插在行内,但不可以嵌套

/开始注释后,遇到第一个/就认为注释结束了。

//的形式

第二种写法是将注释放在双斜杠 //后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在一行语句的结尾。这是C99标准新增的语法。

//这是一行注释

int i=1;//这是一行注释 

不管是哪一种注释,都不能放在双引号里面
双引号里面的注释符号,会成为字符串的一部分,解释为普通符号,失去注释作用
注释会被替换成空格

int num2;
int num/*he*/2; 

第二种就会变为

int num 2; 

标签:语句,main,return,int,常见,C语言,概念,printf,include
From: https://blog.csdn.net/2402_87467998/article/details/142770754

相关文章

  • 基于C语言编程实现发票四要素查验-医疗票真伪查验API
    发票四要素查验是指通过发票代码、发票号码、开票日期和校验码/金额这四个关键信息来验证发票的真实性。这些要素是每张发票独有的,伪造者很难复制出完全一样的发票。而发票查验接口、医疗票真伪查验API正是基于这一原理,为用户提供了一种便捷、高效的查验方式。首先,发票查......
  • 数据科学初学者都应该知道的 15 个基本统计概念
    一、介绍数据科学的核心是统计学,它已经存在了几个世纪,但在当今的数字时代仍然至关重要。为什么?因为基本的统计概念是数据分析的支柱,使我们能够理解每天生成的大量数据。这就像与数据对话,统计学可以帮助我们提出正确的问题并理解数据试图讲述的故事。        从预......
  • 40 个数据科学统计面试常见问题
    一、说明        作为人工智能的工程师,必须明白基本的数学应用,面试的时候难免也会遇到这些提问,那么提问者如何设计面试问题,遇到这些问题如何回答,本篇搜集了统计相关的四十个问题,供大家参考。二、介绍正如JoshWills曾经说过的,“数据科学家是比任何程序员都更......
  • DevExpress WPF中文教程:如何解决数据更新的常见问题?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 2个日期之间相差天数C语言实现。
    2个日期之间相差天数Description时光匆匆,日子一天天的过去,一个百岁老人,所活天数也不过36500多天。现在,小明突然想知道自己已经活了几天。已知小明的出生日期和现在的日期,请你帮助小明计算出他已活的天数。如,出生日期为2011-10-01,现在是2011-10-27,则已活的天数为26天。Inpu......
  • docker常见命令
    Docker是一个常用的容器化工具,以下是一些常见的Docker命令:1.镜像管理列出本地镜像:dockerimages从DockerHub拉取镜像:dockerpull<image-name>构建镜像:dockerbuild-t<image-name>:<tag>.查看镜像详情:dockerinspect<image-id>删除镜像:dockerrmi<image-id......
  • 宝塔面板无法访问,常见原因及如何快速解决?
    宝塔面板无法访问可能由多种原因导致,以下是一些常见的原因及其快速解决方法:服务器连接问题:检查服务器是否正常运行,确认服务器没有宕机。检查服务器的网络连接状态,确保服务器能够正常上网或被外部网络访问。域名解析问题:如果您是通过域名访问宝塔面板,请检查域名解析设......
  • MyBatis的常见面试题
    MyBatis1、什么是MyBatisMyBatis是一款优秀的半自动化的持久层框架。支持自定义SQL、存储过程以及高级映射。2、MyBatis的特点?简单、灵活、解耦、丰富的标签3、MyBatis的核心组件全局配置文件:MyBatis的一些全局信息,包含数据库链接信息和MyBatis运行时所需要的各种特性,以及......
  • ara::core::Future::then()的概念和使用方法
    1.概念在ara::core::Future的上下文中,then()是一种用于处理异步操作结果的机制。一个Future代表一个尚未完成的异步计算,它最终会产生一个结果或者一个错误。then()方法允许你在Future完成时注册一个回调函数(或者说后续操作),这个回调函数会在Future成功完成(即产生了结果)时被调......
  • 基于C语言的排序
    排序的概念:排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]......