常量、

分类:字面常量,#define修饰的常量,const修饰的常量,枚举常量。字面常量也就是我们很熟悉的常量,比如5,g,这些都是常量,无法被改变,可以直接写出来。之前的int a = 5,a就是变量,可以被赋值5.

const修饰的常量

#include <stdio.h>

int main()

int num = 1;

printf(“%d\n“, num);

num  =  19;

printf(”%d\n“, num);

return 0;

运行后可以打印出1和19两个数字。num先被赋值为1,后又改为19.现在在int num前加上const,

const  int  num  =  1;const的意义就是常属性。当加上const后,num的值就不能被改变了,const给num加上了常属性,虽然它是变量,但是却有常数的性质,所以num此时叫常变量。再次运行程序,编译器会报错。虽然const给了变量常属性,但是变量还是变量,并不是常量。

#define定义的标识符常量

#include <stdio.h>

#define  MAX  10

int main()

int  arr【MAX】=  {0};

printf(”%d\n”, MAX);

return 0;

运行起来,可以发现打印出10.如果:

const int a = 10;

int arr【a】 = {0};

此时就会出错。而define则可以。

枚举常量

枚举要用到enum关键字。

enum  Sex

Female,

Male,

Secret

};   //这个分号必须有。这三个值就是枚举常量。

int main()

enum Sex s = Female;

printf(“%d\n”, Male);

Female);

Secret);

return 0;

运行起来,会打出0,1,2这三个数字。这三个词是有数值的且不可被改变,0,1,2。

字符串+转义字符+注释、

字符串

字符串是由双引号引起的一串字符,其结束标志是\0,计算字符串长度的时候\0不计入,它不是字符串内容。比如“asdasdasd”,“1231235452”,“z”都是字符串 。字符串的存储可以用数组来存储,数组就是一组数。

int main()

char  arr1【】 = “abc”;

printf(“%s\n”, arr1);

return 0;

这样打印出的结果就是abc。如果:

int main()

char  arr1【】 = “abc”;

char  arr2【】 = {‘a’, ‘b’, ‘c’}

printf(“%s\n”, arr1);

printf(“%s\n”, arr2);

return 0;

结果是abc 和abc。。。。bc,省略号会出现随机字。为什么就出现这种情况?第一种以字符串形式呈现,第二种是三个字符呈现。那么为什么会有不同?第一种的具体内容其实是三个字符加上结束标志\0,\0的值是0,所以如果给第二个后面再写一个0,那么显示结果就一样了。我们既可以写成‘\0’,也可以直接写0,读取数组内容读取到c时就停了,就不会有其他的东西了。 \0是隐藏的。

\0有数值,其他字符自然也有数值。‘a’的值为97,‘A’的值为65,想#¥这些也都有自己的值,这里牵扯到ANCII 编码,ANCII码值。可以搜索ANCII表,能够找到。

我们还可以更具体的看刚才代码中字符串的长度。

int main()

char  arr1【】 = “abc”;

char  arr2【】 = {‘a’, ‘b’, ‘c’}

printf(“%d\n”, strlen(arr1));

printf(“%d\n”, strlen(arr2));

return 0;

strlen——string length    用于计算字符串长度。

运行的结果是3和随机值。第一种具体写为a b c \0,第二种是a b c 。。。后面全为随机值,直到遇到一个随机值0,才能停止,所以我们手动在c后给一个0才能和第一种一样。

转义字符、

\0就是一种转义字符。这里要具体说一下转义字符。

int main()

printf("abcn");

return  0;

}

这样的结果就是abcn,如果在n前加上转义符号\,变成abc\n,那么结果就是abc,然后切到下一行。\n是换行转义字符,输出完后就换行。让我们看这样一个 小程序。

int main()

{

printf("c:\test\32\test.c");

return 0;

}

结果会是c:       est一个向右的箭头             。这很奇怪,并没有打出相应的字符串。t是一个正常的字符,但是\t就是一个转义字符了,\t是一个水平指表符,它会打印出一块空白,其实就是一个水平制表符这样长度的一个空格。水平制表符并不重要,重点在于转义字符。给一些转义字符:

\?          在书写连续多个问号时使用,防止它们被解析成三字母词。

\'            用于表示字符常量或者说字符’

\"           用于表示一个字符串内部的双引号

\\           用于表示一个反斜杠,防止它被解释为一个转义序列符

\a          警告字符,蜂鸣

\b          退格符

\f           进纸符

\n          换行

\r           回车

\t           水平制表符

\v          垂直制表符

\ddd      ddd表示1~3个八进制的数字。如\130x

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

\?是一个老旧C语言的字符,连续两个问号后加上一个字符,它就会转换成任意一个其他的字符,而不是原本程序员想输出的内容,这也就是出现了三字母词。如果在两个字母前分别加上\,则可以正常打印内容,这个无需在意。

再看之前的程序,由于转义字符的存在,结果打印出错。我们可以在\前再加\一个,这样形成一个\\,作用在上面,这样就可以防止内容被转义,也就是这样的代码:c:\\test\\32\\test.c,于是 c:\test\32\test.c就可以打印出来了。这就是转义字符。

再说一下其他的转义字符。\’:如果我们还想打印’,那么printf(“%c\n“, ’’’);这样会出错。编译器解析的时候会把前两个当成一对,而第三个’则落空,所以会形成一个空字符常量。在中间的’前加上\,这样就是’   \’    ’,那么这样就可以正常打印出’了。%c打印字符,%s打印字符串。刚才是字符,那么字符串也一样:printf("%s\n", "\"")这样才能打印正确。

#include <string.h>

int main()

printf(”%d\n”,  strlen("c:\test\32\test.c"));

return 0;

结果出来是13.\t是算一个字符,\32也算一个。\32其实际上,32是两个八进制数字,\32是32这两个八进制数字转换成十进制数字后这个十进制数字就是一个ANCII码值,这个值对应的字符,注意读作三二,而不是三十二。我们只打印一下\32,printf(“%c\n”, ‘\32’);会得出一个向右的箭头,就是之前所说的打印结果中出现的箭头。具体ANCII码值可以自行搜索。

同样,\xdd也是如此,比如printf(“%c\n”, ‘\x61’),也能找到对应的符号。

注释、

注释是给人看的,对于程序本身没有什么作用,只是在给程序员解释一下这行代码要做的事。另一方面,有些代码不需要执行时,也可以注释掉,程序就会自动跳过这些代码。在C语言中,/* ........   */ 这是注释的形式。以/*开始,以*/结束,只要遇到*/,注释就结束。

选择语句、

选择语句是C语言中很常用的语句,也很重要。选择语句顾名思义,重在选择,通过给定一些条件代码,来让计算机自己做选择,当然这以后也会用到游戏上。

if,while语句

int main()

{

int line = 0;

while (line < 20)

{

printf("asdasd\n");

line++;

}

printf("xcz\n");

return 0;

}

程序的顺序是声明line,给了一个line<20的条件,计算机会自己判断line是否符合条件,符合条 件,就会打印出asdasd,然后line++的意思就是line加1,然后再次进入while循环,再次判断。当某次line为20时,不再符合条件了,那么此时跳出循环打印出xcz,然后程序结束。这样的结果就是,会出现20次asdasd,然后最后一行出现xcz。可是这个程序还不够严谨,除此之外,我们还可以再加上对循环次数的监视,让他每次循环都表示出这是第几次。

nt main()

{

int line = 0;

while (line < 20)

{

printf("asdasd : %d\n", line);

line++;

}

if(line >= 20)

printf("xcz\n");

return 0;

}

asdasd冒号右面以十进制常数呈现,数字存储在line里。这样就能显示出每一行是第几次循环。while语句的格式就是:

expr1;

while(expr2)

expr3;

expr为表达式。

if-else语句

if,else,其意为如果;其他,否则。其形式为:

if(expr1)

statement1;

else

statement2;

这里还要引入一个

else if(expr2)

statement3;

.....

else if就是再给一个判断。举一个例子:

int  ag = 7;

int main()

if(ag > = 8)

printf("asd\n");

else if (ag <= 6)

printf("qwe\n");

else

printf("zxc\n");

给ag赋值7,然后进入程序,判断条件,由于ag均不符合两个条件,所以打印出zxc。

for语句

for语句与while语句可以同时比较。其形式为for(expr1;expr2;expr3)expr1执行赋值,expr2执行测试判断,expr3增加存储值。expr3是循环体完成的最后一件事,比如:

int  h = 0;

int sum = 0;

int main()

{

for (h = 1; h <= 47; h++)

sum += h;

if(h = 48)

printf("%d\n", sum);

return 0;

}

进入程序后,原先被赋值为0的h,现在被赋值为1,然后判断h <= 47,接着就往下走,遇到sum += h,这行代码的意思为sum=sum+h,把sum+h的值赋值给sum,之后再往上走,执行语句h++,h++的意思为h+1.第二次循环,h为2,仍然符合判断条件<=47,新的sum等于原sum值加新h值,也就是1 + 2,也就是sum + h1 + h2,那么循环下来,sum就把所有的h值都加在了一起,也就算出来了1加到47的和。之后h为48时,判断不正确,为零。C语言中,只有非零和零,分别为真和假,于是来到if语句,此时h一定等于48,因为h为整数,47再加1后就是48,所以打印出sum值。其实不加if语句也可以,只是出于严谨而已。for语句在C语言中是应用很广泛的语句,因为相对于while来讲,for语句只需写出一行即可展示所有表达式,并且视觉上看起来很简洁。

这里插入一条,在C语言中,=与==不一样,可以注意到,之前涉及到=的时候,我一直写的是赋值,而不是等于。=是赋值,==是等于,赋值的意思是把右边表达式的结果给左边的变量,而等于就是数学意义上的等于,所以=与==不相同,如果在刚才for语句例子里用==,那么就会出错,并且也解释不通。

循环语句还有do-while语句,之后的记录中会有更详细的关于循环语句以及do-while语句的说明。

结束。

C语言学习记录-----이 初识C语言(2)相关推荐

  1. C语言学习记录——삼 初识C语言(3)

    函数 看一个程序: #include <stdio.h> Add(int x, int y) { int z = x + y; return z; } int main() { int  ...

  2. Fortran语言学习记录

    Fortran语言学习记录** ** 今天是2020年4月1日,上午终于把微软的Visual Studio 2013(https://blog.csdn.net/wobckr/article/deta ...

  3. C语言学习记录(14)英文单词排序 查找最长的单词

    C语言学习记录 前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习C语言写起,自己本身对程 ...

  4. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  5. Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法

    Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)-命令提示符cmd的几种方法 目录 利用python语言实现调用内部命令-命令提示符cmd的几种方法 T1. ...

  6. C语言学习宝典下载,C语言学习宝典

    C语音学习宝典手机版是一款很好用的C语音移动学习工具,为用户带来了C语音真题联系及学习课程,让用户可以充分利用碎片时间进行联系.C语音学习宝典手机版还提供了非常强大的手机编程工具,很多代码手机上就能完 ...

  7. c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...

    [[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...

  8. c++/c语言学习记录时间帖

    双非本科浑浑噩噩过去了,现在双非研一,不想毕业的时候跟大四一样,决定好好学习一门技术,听了一些人的建议,感觉自己研究方向对以后找工作没什么帮助的,在做好导师安排的科研任务的同时,多学一点东西,抓紧ru ...

  9. 不正经的C语言学习记录(一)

    事先声明:我目前学习C语言主要是通过慕课上翁恺老师的课程学习的,所以打算大致按照翁恺老师的课程顺序来记录我对C语言所了解的内容. 首先简述一下C语言的历史:C语言是在上个世纪七十年代开始的,当然,更准 ...

最新文章

  1. 宿主如何访问虚拟机中的web服务器
  2. 以下属于单例模式的优点的是_三、单例模式详解
  3. 统计特性和概率估计-1 (数学推导与证明)
  4. mysql知识点概览_MySQL 基本架构概览
  5. 编译原理——实验壹——TINY语言的词法分析
  6. 简单聊聊Python协程
  7. [零基础学JAVA]Java SE应用部分-35.JAVA类集之二
  8. springboot整合MyCat
  9. 给爱设计的你,一个理由爱上(和使用)渐变素材的理由
  10. mysql 5.74安装教程_MySQL数据库作为关系型数据库中的佼佼者,因其体积小,速度快,成本低,不仅受到了市场的极大追捧,也受到了广大程序员的青睐。接下来,就给大家说一下,MySQL的...
  11. php-5.6配置,PHP5.6+apache2.4环境配置
  12. 给你一个全自动的屏幕适配方案(基于SW方案)二 —— Calces.Screen插件拓展功能升级...
  13. 文言色彩的客套话之感想
  14. 金万维异速联客户端 盛装入驻苹果应用商店
  15. css 动效彩旗飘扬
  16. 浏览器如何工作How browsers work翻译
  17. 五大靠谱的婚恋相亲APP详细特点缺点分析!
  18. 若依(RuoYi-Vue)+Flowable工作流前后端整合教程
  19. C++基础(四)——模板
  20. uos系统桌面怎么没有计算机图标,UOS系统体验:启动、桌面和开始菜单

热门文章

  1. [Git] 配置Github Gitee reference加速
  2. web太极八卦图纯css
  3. 应用层: HTTP 与 HTTPS协议
  4. 基于JSP的煤炭销售系统,源码下载
  5. 从马文到AlphaGo AI走过了怎样的70年?
  6. css 文字两端对齐
  7. exchange服务器重装后,exchange未正常卸载后 重新安装操作方法.docx
  8. 【C/C++】用格雷戈里公式求π
  9. Linux 网络唤醒
  10. 2020-06-07