目录
文前tip
变量的作用域和生命周期
作用域
局部变量的作用域:
全局变量的作用域:
生命周期
常量
字面常量
const修饰的常变量
#define定义的标识符常量
枚举常量
字符串
转义字符
引子
转义字符的类型
\?
\'和\"
\\和\a
\b VS \f VS \n VS \r
\t和\v
\ddd和\xdd
Ascll
转义字符的Q
注释
编程语句
顺序结构
选择结构——选择语句
循环结构——循环语句
上一篇博文中,预留了一个编程题目,在这里为大家解答。
//写一个代码
//完成两个整数的相加,并输出结果
#include
int main()
{
int a = 0;
int b = 0;
int s = 0;
//输入两个值
scanf_s("%d %d", &a, &b);//scanf函数是输入函数
s = a + b;
printf("%d\n", s);//printf函数是输出函数
return 0;
}
在我的gitee账户中也有详细的关于C语言的代码。欢迎大家去关注我!
【gitee:https://gitee.com/TSQXG】
在上篇博文讲到变量分为局部变量和全局变量,在这里我们分别探讨它们的作用域和生命周期!
综上所述:
- 局部变量的作用域是变量所在的局部范围(注:所定义处先后的作用域范围内)
- 全局变量的作用域是整个工程
综上所述:
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
形如20,19.8,7.34,'a'这样直接写出的值都是字面常量。
上面说到a本质上还是变量,就像"美籍华人"还是华人一样,现在我们想去证明a本质是一个变量?
证明a本质是变量:
上面是没有被const修饰的a,那下面被const修饰了的a会编译正确吗?
很显然不会,所以a的本质还是变量,那有些人显示编译正确是为什么呢?
这种情况存在于.cpp下C++情况是适用的。那这里我们不再过多探讨。
那么枚举常量的值可以改变吗?当然可以
上一篇博文我们提到有字符类型,那么有字符串类型吗?答案是没有
那我们怎样去表示字符串呢?字符串里又蕴含了什么呢?
"hello tangdi.\n"
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串
特别注意:字符串的结束标志是一个\0的转义字符。
在计算字符串的长度的时候\0是结束标志,不算作字符串内容。
接下来我们来------------证明\0的存在
------------------\0的重要性
那么我们手动加上\0可以吗?当然可以
----------------------\0不算作字符串的内容
大家可能会疑惑\n,\0到底是什么?接下来我们要学到转义字符。
转义字符:"转义"顾名思义就是转变原来的意义。
当我们想打印一个路径:C:\code\test_6_30\test.c
可是没有得到我们想要的结果,这是为什么呢?
这是因为由转义字符的存在,那我们怎样去打印出我们想要的结果呢?
当然是继续"转义"啦!
接下来我们将逐一分析这些转义字符
\f基本不用这里我们不分析了,\n和\r大家也可以动动手指自己尝试验证下它们的作用。
\t是水平制表符相当于Tab键,\v是竖直制表符几乎不用。
#include
int main()
{
p rintf("abcde");
----//相当于一个\t用于水平对齐的作用
return 0;
}
\ddd其中ddd表示1~3个八进制的数字。字符的8进制表示的形式。
如\130表示字符X。先将130------->88 转化为8进制------->查询Ascll码表得出字符
\0就是特殊的\ddd。
\xdd其中dd表示2个十六进制的数字。字符的16进制表示的形式。
如\x30表示字符0 。先将30--------->105 转化为16进制-------->查询Ascall码表得出字符
!Ascll码表取值范围有限。
!记忆一些特殊的值即可:A为65 a为97 0为48(同个字母的大写比小写字母要小32)
!0~31是不可打印字符
我们来计算一下整个字符的个数吧!
所以,转义字符在计算字符数的时候,所有转义字符都只算一个字符。
主要是if else语句和switch语句,这里我们简单讲解一下if else语句
C语言中如何实现循环呢?
while语句,for语句,do.....while语句。在这里我们了解一下while语句。
#include
int main()
{
int line = 0;
while (line<30000)//特别注意语句不需要加分号
{
printf("敲代码:%d\n",line);
line++;
}
if (line == 30000)
{
printf("好offer\n");
}
return 0;
}
那我们可以这样写吗?
#include
int main()
{
int line = 0;
while (line<30000)
{
printf("敲代码:%d\n",line);
line++;
}
printf("好offer\n");
return 0;
}
当然不可以,有人说实现代码敲到30000行直接跳出循环,不需要限制条件了,但是万一在循环的过程中停止了没有达到30000就直接结束,也跳出了循环,这是不符合我们的题目要求的。
在vs运行之后发现并不能去掉if的限制条件。
最后,下篇博文博主将介绍到函数。大家可以提前尝试去编译器上利用函数写出两个整数相加。
我也将在下篇文章把代码放出来。博主最近才从期末考试的水生火热中解脱出来了。
感谢大家的阅读,有任何的问题和错误都可以发邮箱给博主,谢谢大家!
【邮箱:[email protected]】