目录

常量

1.字面常量

2. const修饰的常变量

3.#define 定义的标识符常量

4.枚举常量

字符串+转义字符

1.字符串

2.转义字符

注释

选择语句

循环语句

函数

数组

操作符


续上茶水

书接上回

精彩内容

继续由俺细说


常量

C语言中的常量和变量的定义的形式有所差异。C语言中的常量分为以下几种:
·字面常量
·const 修饰的常变量
·#define 定义的标识符常量
·枚举常量

这四类呢,我会仔细的给各位客官讲述,让各位客官能够更好的理解

1.字面常量

//1.字面常量
int main()
{int a = 100;char ch = 'c';"abcdef";//字符串常量3.14;return 0;
}
  • 2. const修饰的常变量

(书讲到这里,有些看官已经纳了闷,这常量就是常量,变量就是变量,这常变量是个上面古怪玩意儿?)

我们先看这样一段代码:

int main()
{int n = 10;printf("n=%d\n", n);//10n = 20;printf("n=%d\n", n);//20return 0;
}

这段代码相信客官们一眼看破结果:

很显然n是一个变量 ,它是可以被改变的。

那有看官就会说了,小赛毛,这const修饰的常变量是什么概念呢?

各位客官请注意,咱们醒木一拍,接下来看老夫展示

当我现在在n定义的前面加上一个const,这个时候再来编译我刚刚的代码:

//2. const修饰的常变量
int main()
{const int n = 10;printf("n=%d\n", n);//10n = 20;printf("n=%d\n", n);//20return 0;
}

各位看官请注意,这个时候是不是具有了一种保护,对不对

这个时候我想告诉大家的是const一旦去修饰这个n,n就具有了一定的常属性,常属性的意思就是它就不能被改变了,现在已经明显的看到了它不能被改变,具有了常属性。

但是呢,虽然它具有这种常属性,但它本质上还是一个变量,它不是常量,它没有变成彻底的常量,它只是具有了常属性。那我们怎么证明这么一回事呢?

我再来给大家举一个栗子:

我们先写这样一段代码:

int main()
{int arr[10] = { 0 };return 0;
}

显而易见代码是没有问题的,接下来我们对代码进行修改;

int main()
{int n = 10;int arr[n] = { 0 };return 0;
}

我们发现编译器提示了这样的错误。那有看官就说了,小赛毛你给它前面加个const试试

int main()
{const int n = 10;//这里的n具有常属性,但是本质上是一个变量int arr[n] = { 0 };return 0;
}

各位看官应该也发现了编译器报错:这里的n具有常属性,但是本质上是一个变量。

老夫呢,突然想到一个东西,本来想着以后讲给大家伙,现在兴致一来,就让老夫提前说上那么一点。

int main()
{int arr[10] = { 0 };//C99之前的语法return 0;
}

在C99标准之前的语法,就是数组这里必须要给上常量。

在C99标准中增加一个变长数组的概念,这里指定数组大小的时候,可以使用变量了。

3.#define 定义的标识符常量

接下来呢,我将举一些栗子给大家来讲述以下#define 定义的标识符常量是怎么一回事儿:

#define MAX 100
int main()
{int m = MAX;printf("%d\n", m);return 0;
}

如果,这里打印m的值为100,是不是就说明 MAX 的值传递给m了?CTRL+f5代码走起来,我们一看究竟:

果然,这个地方,是不是就相当于我们把100放到m里面去了。

当然各位客官也可以直接去打印MAX。

这个时候呢,有些看官就按捺不住了,说我在main函数里面把这个MAX改改行不行呢?那我们来试试:

#define MAX 100
int main()
{//MAX = 101;//errint m = MAX;printf("%d\n", m);return 0;
}

这个时候编译器就开始报错了,刚才我们说什么来着?常量不可以被修改!欸,对!常量不可以被修改,各位看官要是非要去修改,那不就错了嘛~

4.枚举常量

各位看官已经了解了上述三种常量,那就由老夫再来给大家伙讲述一下枚举常量,那么什么叫做枚举常量呢?我们不妨再举个栗子:

光从字面上说起,我们是不是会感觉枚举就是一一列举

//枚举就是一一列举
//枚举是C语言提供的一种自定义类型的方法

什么意思呢?

比如生活中:

//性别:男,女,保密

//三原色:red green blue

enum Sex
{MALE,FEMALE,SECRET
};//enum COLOR
//{
//  RED,
//  GREEN,
//  BLUE
//};
int main()
{printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);return 0;
}

枚举常量是有值的,而且值是整形

这时候可能又有客官要说了,那它的值我们可不可以改呢?不妨我们来一试便知:

我们可以看出编译器提示错误,所以呢,MALE是常量。希望各位客官可以理解~


字符串+转义字符

1.字符串

由双引号( Double Quote )引起来的一串字符称为字符串字面值( String Literal ),或者简称字符
串。
int main()
{char arr1[] = "abc\0def";char arr2[] = { 'a','b','c','d','e','f', '\0'};printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}

代码运行起来我们看一下结果:

在这里再一次显示了 \0 作为结束标志的重要性!

2.转义字符

//转义字符 - 转义就是转变它的意思

现在呢我想去打印C盘下test文件夹下的test.c文件:

int main()
{printf("c:\test\test.c");return 0;
}

我们发现结果是这样的,这是怎么了呢,为什么和我们预想的不一样呢?

原因很简单,在这里 \t 被认定为一个转义字符

我们再来看一段代码:

int main()
{/*printf("c:\test\test.c");*/printf("abcndef");printf("abc\ndef");return 0;
}

代码的运行结果为:

为什么会出现这种情况呢?

因为在n的前面加上\,就形成了换行符!

//转义字符 - 转义就是转变它的意思
int main()
{printf("c:\\test\\test.c");printf("abcndef");printf("abc\ndef");//三字母词 - //??) -> ]printf("(are you ok\?\?)");//(are you ok]printf("%c\n", 'a');printf("%c\n", '\'');printf("%s\n", "abc");printf("%s\n", "a");printf("%s\n", "\"");printf("\a\a\a\a\a");printf("%c\n", '\135');64+24+5 =  printf("%c\n", '\x42');return 0;
}

既然我们讲到了strlen,那老夫就不得不再讲一下这段:

int main()
{char arr1[] = "abcdef";char arr2[] = { 'a','b','c','d','e','f' };printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));return 0;
}

CTRL+f5我们来看一下运行结果:

我们画图来分析一下:


注释

int main()
{/*int b = 20;*/
/*C语言风格注释
int Sub(int x, int y)
{return x-y;
}
*/int a = 10;//创建一个整型变量,并赋值10//C++注释风格    return 0;
}

但是各位客官注意咯,C语言的注释风格是有一定缺陷滴~额滴个亲娘乐这玩意有啥缺陷快给我一一道来。

注释有两种风格:
  • C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释
  • C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行

选择语句

int main()
{int input = 0;printf("跟着小赛毛游历C语言\n");printf("你要好好学习嘛?(1/0):\n");scanf("%d", &input);if (1 == input){printf("学好C语言,进入新大陆!\n");}else{printf("回家卖烤红薯\n");}return 0;
}

CTRL+f5我们来看一下运行结果:


循环语句

有些事必须一直做,比如我日复一日的练功说书,比如客官们,日复一日的听我说书喝茶然后一键三连~

int main()
{int time = 0;printf("听小赛毛说书\n");while (time < 23333){printf("听书,喝茶,一键三连%d次\n",time);time++;}if (time >= 23333){printf("获得小赛毛真传,有资格进入下一阶段听书,喝茶,一键三连\n");}return 0;
}

CTRL+f5我们来看一下运行结果:

 其实呢,各位客官是否发现我们生活中的事情无非就三种情况:

顺序        选择        循环


函数

int main()
{int sum = 0;int n1 = 0;int n2 = 0;//输入scanf("%d%d", &n1, &n2);//计算求和//sum = n1 + n2;// 函数的方式来实现sum = Add(n1, n2);//输出printf("sum=%d\n", sum);return 0;
}

各位客官有没有发现,这里的函数其实很想一个工厂:

函数的实现:

Add(int x, int y)
{int z = 0;z = x + y;return z;
}

这个代码呢,其实有点啰嗦,那我们怎么给它简化呢?看好啦,老夫只此展示一遍:

Add(int x, int y)
{return x + y;
}

这个时候,CTRL+f5我们来看一下运行结果:


数组

int main()
{//int a = 10;//int b = 11;//int c = 12;//...//数组 - 一组相同类型元素的集合int arr[10] = {10,11,12,13,14,15,16,17,18,19};//0 1  2 ...int i = 0;while (i < 10){scanf("%d", &arr[i]);i++;}//i=10i = 0;while (i < 10){printf("%d ", arr[i]);i++;}/*printf("%d\n", arr[5]);*///char ch[] = { 'a', 'b', 'c', 'd', 'x' ,'y'};return 0;
}
C 语言规定:数组的每个元素都有一个下标,下标是从 0 开始的。
数组可以通过下标来访问的


操作符

//int main()
//{
//  //int c = 10 / 3;//3...1
//  //printf("%d\n", c);
//  float c = 10 / 3.0;//int double-> double 3.333333
//  printf("%f\n", c);
//
//  //float  %f
//  //double %lf
//
//  return 0;
//}
////int main()
//{
//  int a = 10 % 3;//10/3...1
//  printf("%d\n", a);
//  return 0;
//}
//int main()
{int a = 10;//初始化a = a + 10;//1a += 10;//2a -= 2;a = a - 2;//    a = 20;//赋值return 0;
}

欲知后事如何 且听我下回分说

(江湖游历在外,还要多多仰仗各位衣食父母,方便的话点个赞,点个关注呗,谢谢你嘞,客官慢走)

小赛毛游C记-初识C语言(2)相关推荐

  1. 新元宇宙奇科幻小说原创作品每周连载《地球人奇游天球记》第九回女神伴飞

    二十一世纪"新元宇宙"奇科幻小说原创作品系列每周连载[第一部]                <地球人奇游"天球"记>               ...

  2. 新元宇宙每周连载《地球人奇游天球记》第十三回火星烧烤

    二十一世纪"新元宇宙"奇科幻小说原创作品每周连载[第一部] <地球人奇游"天球"记> 第十三回 火星烧烤 1.静沐"新哲学"思想 ...

  3. “新元宇宙”奇科幻小说原创作品每周连载《地球人奇游天球记》第五回太空之旅

    二十一世纪"新元宇宙"奇科幻小说原创作品系列每周连载[第一部] <地球人奇游"天球"记> 第五回太空之旅  1.静沐"新哲学"思 ...

  4. swing中怎么在原来图片的基础上切换第二张图片_摄影比赛原来是这么评出来的!照片点评与修图小赛第10期...

    今天的摄影教程中,托马斯会和大家分享网络上的摄影比赛,都是如何进行评选的,以及如何去分析照片的优缺点. 我会以修图小赛第10期<6100万像素修图挑战来了!索尼A7R4风光原片后期等你调!> ...

  5. 微信小程序期末大作业 记单词小程序 适合初学者学习使用

    微信小程序期末大作业 记单词小程序 小程序如下图所示:(下载链接在文末) 点我下载资源 https://download.csdn.net/download/weixin_43474701/59677 ...

  6. 联想微型计算机m910q6,一台比较完美的黑苹果小主机 联想M910Q折腾记 opencore EFI分享...

    一台比较完美的黑苹果小主机 联想M910Q折腾记 opencore EFI分享 2020-05-27 13:23:39 77点赞 487收藏 93评论 追加修改(2020-05-27 19:27:06 ...

  7. 股神问题 - 有股神吗? 有, 小赛就是!

    题目描述 有股神吗?有,小赛就是!经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推.为方便计 ...

  8. 【小程序迁移】微信小程序迁移到支付宝记坑

    [小程序迁移]微信小程序迁移到支付宝记坑 文档控制台网址汇总 前言 本地区别 仅企业可用的功能 限制功能 插件区别 云开发API区别 需要做的代码变更 xml部分 CSS部分 JS部分 自定义组件 比 ...

  9. 狐妖小红娘手游如何用电脑玩 狐妖小红娘手游PC电脑版教程

    <狐妖小红娘>手游是根据同名人气动漫改编而成的,游戏高度还原了动漫中的剧情,人物也是制作的更加精致,瞬间让我们融入动漫中去.全新的日系风格设计,各种萌妹子登场,讲诉一段离奇的人妖恋!下面小 ...

最新文章

  1. windows 8 修改文件权限
  2. 如何在“首选项”摘要中显示Android首选项的当前值?
  3. windows python 访问mtp存储空间_Python 3.7 已上架 Microsoft Store,让你 轻松使用 Python...
  4. 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
  5. prometheus连续查询_Grafana + Prometheus快速搭建监控平台
  6. python nlp_Python NLP入门教程
  7. 数据结构 6-0 图
  8. ubuntu14.04源无法更新--jdk安装出错解决方法
  9. 写在WinHEC开幕之际:沿着Windows我们一路走来
  10. panda提取时间戳中的日期_Pandas处理时间序列数据的20个关键知识点
  11. WinForm中ComboBox绑定数据的用法
  12. 基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)
  13. zabbix保姆级安装教程
  14. 【PI调节】对PI调节的一些认识
  15. Open Distro for Elasticsearch:AWS Elasticsearch 发行版
  16. 计算机开机界面用户如何删除,电脑开机用户去掉登录界面方法
  17. 解决Win10自动打开代理问题
  18. 点开计算机左侧没有桌面一项,为什么,我的电脑右键点选桌面空白弹出的右键选单里面没有了“萤幕解析度”一项啊?怎么添加回来啊急!1...
  19. 如何编辑微信公众号(微信公众号内容制作流程)
  20. TM1638快速开发教程(基于正点原子mini板stm32f103rc)

热门文章

  1. php qq远程桌面共享,新手学堂:用VNC实现远程桌面共享的方法
  2. 词云图制作:15张炫酷的词云图海报、PPT报告词云图、3D词云图,MagicCloud词云图一键制作软件
  3. js利用分隔符分隔字符串
  4. RenderDoc塞尔达荒野之息抓帧分析
  5. Oracle ADF 12.2.1 使用报告
  6. react上拉加载更多
  7. 初学OpenCV:用本地摄像头拍照并保存为灰度图片
  8. uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条
  9. 【软件测试工程师】App 应用测试方法以及测试思路
  10. 流媒体技术原理与应用