字符与字符串,转义字符,Ascll码

双引号引入的是一个字符串,单引号引入的是字符,字符串可以是多个字符,也可以没有字符,这就是空字符串,字符串打印格式可以是%s,也可以直接打印

2024.5.22添加:常量字符串不可修改
例如:char* p = "abc":不可通过指针修改该字符串,该字符串存放在常量区

int main
{
	'a'//字符
	"abc"//字符串
	""//什么都不引,就是空字符串
	printf("%s\n","Hello World");
	printf("Hello World\n");
	return 0}

字符串末尾隐藏了\0,\0是字符串的结束标志
在这里插入图片描述
可以看到第一个直接定义字符串的会有一个 \0 的位,第二个没有,他们运行的时候,字符串在打印的时候,碰到 \0 才会停止打印,因为第二个后面没有跟 \0 ,所以会打印乱码,一直出现 \0 才会停止
在这里插入图片描述
如果字符串中间就有 \0 ,那么打印便会在 \0 处停止
在这里插入图片描述

类似 \0 与 \n 都是转义字符,就是加上“\”以后不再是原来的意思,例如 \n 就是换行的意思。
在这里插入图片描述
第三个字符串中间碰到了\n就换行再打印

\ddd表示8进制表示的数,130为8进制,表示成十进制就是88,ASCII码值为88对应的字符就是大写X,\ddd表示的数字是ASCII码值,所以大小有限制,大于等于400(8进制)就会报错,因为没有那么大的ASCII码值,而且\ddd只占一个字符长度
在这里插入图片描述

int main()
{
	char ch = 48;//这时为数字
	printf("%d\n", ch);
	printf("%c\n", ch);//输出为0
	char dh = '\009';//当不符合8进制转义规则的时候,加上单引号为字符,于是输出的%d就是9字符的ascii值
	printf("%d\n", dh);//9对应的ascii值为57,所以输出57
	printf("%c\n", dh);
	char eh = '\060';//当符合8进制转义规则的时候,eh就相当于数字48
	printf("%d\n", eh);//9对应的ascii值为57,所以输出57
	printf("%c\n", eh);
	char fh = '0';//这个也是字符0,%d就输出ASCII值48,%c就输出字符0,相当于上面赋值字符9一样
	printf("%d\n", fh);
	printf("%c\n", fh);
	return 0;
}

在这里插入图片描述
从上述代码运行结果便可以得到
第一个,当变量为数字的时候%d输出为数字,%c输出ASCII码对应的字符,字符输出为空,因为ASCII值无法显示,换成48,输出字符就是0。
第二个,当不符合8进制转义规则是,因为加上了单引号,便被赋值成了字符,以数字输出便是他的ASCII码,以字符输出便是他本身,字符9。
第三个,当符合8进制转义规则时,便被赋值为数字,输出字符便是他的ASCII码值对应的字符。
第四个,直接加单引号,直接赋值字符0,输出数字就是这个字符的ASCII码,输出字符就是它本身。
在这里插入图片描述

单引号表示8位二进制位。
第一行123456转换位16进制为1E240,只取最后八位40,40的十进制就是64,然后输出“@”。
第二行就是Ascll值64的符号就是1
第三行,当引号引两个数字,就将两个数字的Ascll码值拼接起来,4的Ascll码为52,9的Ascll码为57,52对应16进制为34,57对应16进制为39。截取最后八位,Ascll码就是57,因为是%c输出,所以输出57对应的字符就是‘ 9 ’。
第四行输出16进制数字就是3439,就是两个Ascll拼接的数字。
第五行和第四行的相同就是把进制换了。
第六行就是9对应的Ascll码,就是57。
最后得出结论,单引号会把内部的字符进行拼接,如果一位就不变,两位就转化为了short,三位就是int类型了,最后根据输出类型进行截断。

for循环在刚开始进入循环的时候,会对刚开始的赋值进行判断,符合条件就进入循环,下一次循环会先运算,然后再判断

第一个在运算到34的时候就跳出来了,然后打印了34,第二次不符合条件,没有打印,然后继续打印,i为第二次赋值的32
*
*
*
代码:
https://gitee.com/hungry_11/summer-language-training/tree/master/7.20/7.20_1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值