C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)

 

 

知识点概括

1、常量

(1)字面常量,直接写出来的数字,例如3、100;

(2)const修饰的常变量,

const float pai = 3.14;   //变量pai的值恒定为3.14,不可修改,为常变量

(3)#define修饰的标识符常量,

#define MAXSIZE 10   //MAXSIZE的值为10,完全等同于字面常量

(4)枚举常量,能够被一一列举出来的常量值,如性别:男、女,三原色:红、黄、蓝。枚举关键字(enum),枚举常量代码如下:

    enum sex    //性别的枚举常量
	{
		male,   //男
		female  //女
	};

	enum color  //三原色的枚举常量
	{
		red,    //红
		yellow, //黄
		blue    //蓝
	};
	enum sex s = male;  //定义一个变量s,值为0
	enum color c = yellow;  //定义一个变量c,值为1
	printf("%d\n", s);  //0
	printf("%d\n", c);  //1
	s = female;  //变量s的值是可以改变的,c同理,但是枚举常量的值是不能改的,如我们不能把male改成5
    printf("%d\n", s);  //1
	//枚举体内的值默认从0、1、2依次往下排列

注:因楼主此前从未使用过枚举常量,故此处描述可能有误,待后续学习后修正。

2、字符串,“ ”内容,字符数组储存字符串时,“ ”赋值与{ }存在细微差异,代码如下:

    char arr_1[] = "abc";             //此时字符串abc正确的放入数组arr_1
	char arr_2[] = { 'a','b','c' };   //此时字符串已放入数组arr_2,但输出会乱码
	printf("%s\n", arr_1);
	printf("%s\n", arr_2);

C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)_第1张图片

此时的输出结果如图所示,造成此现象的原因其实是arr_1的赋值过程中,编译器自动加了了'\0‘表明字符串的结束,而arr_2的赋值过程中没有该过程,所以我们要手动加上'\0'。

C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)_第2张图片

此时字符串正常显示。

3、ASCII码

4、转义字符,一个转义字符的长度为1,不为2或其他值。

C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)_第3张图片

转义字符几个细节:

(1)\\反斜杠,当我们需要输出打印的字符串中包含’\‘时,直接打印会使编译器将我们要打印的字符串误以为是转义字符,故为实现我们的目的,应使用\\反斜杠,代码如下:

    printf("%s\n", "C:\test\test.c");  //我希望打印得到C:\test\test.c的字符串

但得到的结果是:

C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)_第4张图片

结果与预期不符,原因是编译器将字符串中的\t认为是转义字符,查表得知该字符为水平制表符,故得到的结果中出现了两段缩进,此时我们修改代码如下:

    printf("%s\n", "C:\\test\\test.c");  //使用反斜杠字符

此时得到预期的结果:

C语言提高第二天(常量、字符串、ASCCII码、转义字符、C语言结构)_第5张图片

(2)\ddd(八进制转义字符)与\xhh(十六进制转义字符),(合法的八进制与十六进制转义字符的长度都为1)代码如下:

    printf("%d\n", strlen("\23"));  //查看字符串\23的长度,输出结果为1,由此可知合法的八进制与十六进制转义字符无论写的多长,长度都为1
	printf("%c\n", '\23');    //打印的是八进制数23(十进制数19)所对应的ASCII码字符,即!!

5、C语言结构

(1)顺序结构

(2)分支结构

(3)循环结构

你可能感兴趣的:(C语言学习)