栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

关于C语言中‘’的“秘密”

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于C语言中‘�’的“秘密”

目录

1. 0与‘’与‘0’的区别:

2. ''是字符串结束标志,任何字符串之后都会自动加上''。如果字符串末尾少了‘’字符,则其在输出时会出现乱码问题。 

2.1解释:(能不能以%s的形式打印)

2.2总结:

1. 0与‘’与‘0’的区别:

我们知道,字符数组进行初始化时,可以是字符,也可以是ASCII值(ASCII值有二进制,十进制,十六进制等多种形式),因为通过ASCII表,字符和ASCII值可以相互转换,以%c的形式输出字符,以%d的形式输出ASCII值。

于是我写了下面这个代码,打印字符的同时也打印出字符的ASCII值 

#include 

int main()
{
	int i = 0;
	char arr[] = { 'a','b','c',69,100,'0',0,''};
	int sz = sizeof(arr) / sizeof(arr[0]);

	for (i = 0; i < sz; i++)
	{
		printf("字符 %c ", arr[i]);
		printf("ASCII %d", arr[i]);
		printf("n");
	}
	return 0;
}

 

可以看到,0 和 ‘’ 以%c的形式输出时,什么都没有打印,而 ‘0’ 以%c的形式输出时是0,这是为什么呢?

因为这里的0是 ASCII值0,就是转义字符'',转义字符‘’是ASCII控制字符,字符解释是空字符,并不是打印字符。而字符‘0’的ASCII码值是48。

所以,0和‘’以%c的形式输出时,什么都不打印;以%d的形式输出时,是0;

          ‘0’以%c的形式输出时是0;以%d的形式输出时,是48;

ASCII表如下: 

2. ''是字符串结束标志,任何字符串之后都会自动加上''。如果字符串末尾少了‘’字符,则其在输出时会出现乱码问题。 

可以以%s的形式打印字符数组的所有元素: (%s : 字符串打印)

int main()
{
	char arr1[] = "abc"; // a b c 
	char arr2[] = { 'a','b','c',''};

	printf("%sn", arr1);
	printf("%sn", arr2);

	return 0;
}

 

可以以%s的形式打印,但不能打印字符数组的所有元素:

#include 

int main()
{
	char arr3[] = { 'a','b','','c'};
	printf("%sn", arr3);

	return 0;
}

 

不能以%s的形式打印字符数组的所有元素: 

#include 

int main()
{
	char arr4[] = {'a','b','c'};
	char arr5[3] = "abc"; // a b c 

	printf("%sn", arr4);
	printf("%sn", arr5);
	return 0;
}

 

2.1解释:(能不能以%s的形式打印)

数组arr1:char arr1[ ] = "abc"; 因为‘’是字符串的结束标志,任何字符串之后都会自动加上''。且数组的大小≥ (字符数量+1)。所以可以以%s的形式进行输出

数组arr2: char arr2[ ] = { 'a','b','c',''};也有'',所以可以以%s的形式进行输出。

数组arr3: char arr3[ ] = { 'a','b','','c'};有'',所以可以以%s的形式输出,但是因为''在中间,而‘’是字符串的结束标志,所以当以%s的形式进行打印时,只会输出''前面的字符,并不会将字符数组中的元素全部打印。

数组arr4: char arr4[ ] = {'a','b','c'};没有'',以%s的形式进行输出会出现乱码问题,不行。

数组arr5: char arr5[3] = "abc";因为数组的大小是3,而数组元素有4个,导致最后的''被舍掉了,于是数组arr5中也没有'',以%s的形式进行输出会出现乱码问题,不行。

2.2总结:

‘’是字符串的结束标志,任何字符串之后都会自动加上''。

为了保证让编译器自动添加空字符’’,数组的大小必须≥ (字符数量+1) 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号