C语言学习笔记-P1 初识C语言(2)
C语言学习笔记-P1 初识C语言(2)
上一篇文章学习了什么是C语言,第一个C语言程序“Hello world”,数据类型:
char-//字符数据类型
short-//短整型
int-//整形
long-//长整型
long long-//更长整形
float-//单精度浮点数
double-//双精度浮点数)
学完了变量和常量的周期。我们再将继续往下学习,从常量开始学习吧。
一、常量
C语言中的常量和变量的定义形式有所差异。
C语言中的常量分为以下几种:
- 字面常量 ;
- const修饰的常变量 ;
- #define定义的标示符常量 ;
- 全新的 KaTeX数学公式 语法;
- 枚举常量 ;
1、字面常量
顾名思义,它就是我们字面上的1、2、3…且是不可改变的,比如3,它在我们生活中就是表示一个却的数量。
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#pragma warning(disable:6031)
#include<stdio.h>
int main()
{
int unm = 4;//把一个数赋值给一个变量
3 = 5;//但是把一值赋给一个字面常量就不可以的,因为它改变不了
return 0;
}
上面的代码运行会报错,因为5不能赋值给3。
2、const修饰的常变量
const指的是常量属性。作用是限制变量num,使其不能再改变;例如:
int main()
{
//const - 常属性
const int num = 4;//unm这个变量不能再改变,这里只能为4了
//const修饰的常变量
printf("%d\n", num);
return 0;
}
此时这里的unm变量只能为4,赋其他值会报错。我们再来看一下它为什么讲常量,又叫变量。这是因为unm本质属性还是变量,只不过具有了常属性而已,就像一个外国人拿到中国绿卡,但他相貌还是外国人。所以叫常变量。值得注意的是:虽然说用const修饰了num这个变量,它具有常属性,但依然不能把它当作常量来用。下面就是错误❌的例子:
int main()
{
//const - 常属性
const int num = 10;//num是变量,但是又有常属性,所以我们说num是常变量
int arr[num] = {
0 };//这一句是会报错的
//const int num = 4;//unm这个变量不能再改变,这里只能为4了
const修饰的常变量
//printf("%d\n", num);
return 0;
}
3、#define定义的标识符常量
它则是定义宏,宏做文本替换,是为了方便阅读。其格式如下:
#define[空格]标识符[空格]内容
#define MAX 10
//#define 定义的标识符常量
int main()
{
int arr[MAX] = {
0};
printf("%d\n", MAX);
return 0;
}
3、枚举常量
枚举,中文解释为一一列举。生活中的一些值可以被我们一一列举的,比如说三原色有:红黄蓝。我们看下面代码举例:
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#pragma warning(disable:6031)
#include<stdio.h>
//4-枚举常量
// 枚举:一一列举,生活中总是有可以一一列举的值
//三原色:红、黄、蓝
enum Color
{
RED, //红
YELLOW, //黄
BLUE //蓝
};
//RED YELLOW BULE - 枚举常量 放在上面的大括号里就是枚举常量
int main()
{
enum Color color = RED;//color为通过枚举类型所创建出来的变量
color = YELLOW;//这里可正常运行
BLUE = 6; //这一句就不可以运行
//printf("%d\n", RED); //值的大小默认是0
//printf("%d\n", YELLOW);//值的大小默认是1
//printf("%d\n", BLUE);//值的大小默认是2
return 0;
}
这里我们把我们要一一列举的量放在大括号里,这时就称为枚举常量。而且它的值也不能改,简单的说,枚举常量不能改,但是通过枚举类似所创建出来的变量color是可以改变的。
二、字符串+转义字符+注释
1、字符串
生活中的身份证,电话号码等很多可能的字符串信息要存储,那么C语言中是如何表示字符的呢?
答案是,这种由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算字符串内容。
简单地说字符串其实就是有双引号引起的一串字符。如下示例代码:
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#pragma warning(disable:6031)
#include<stdio.h>
//二、字符串
int main()
{
char arr1[] = "abc"; //数组
char arr2[] = {
'a', 'b', 'c'};
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
当我们运行后结果会怎么样呢?如下图:
我们看到arr1输出为abc,arr2输出为abc烫烫烫蘟bc。为什么?
现在试着去调试这些代码,按下F10后回调出监视窗口,如下图: