c语言(转义字符,指针变量)

来源:百度知道 编辑:UC知道 时间:2024/06/18 00:00:20
(1)main()
{ char a[]={"abc\0def"},*p=a;
printf("%c",*p+4);
}本例中得出的值是e,不知道怎么得来的,难道*p+4表示a中的a[4]吗?这个字符串输出后的值是abc呀,a[3]以后的值应该是‘\0’吧?
(2)转义字符
main()
{printf("%d",strlen("t/"066/xee/n"));}输出的值是7,为什么是7?066算是一个数吗?
(3)main()
{unsigned short a=32678;
printf("%d",a);

}值输出后是-1,为什么不会报错?
(4)main()
{printf("%x",-1);

}这个输出的值是ffff为什么?
(5)转义字符到底怎么表示才是合法的,如\000,\0X98到底要怎么表示才是正常,最好能举例说明,在此先谢谢关注的朋友们!(回答好的话,我会给大家加分的)!

1. C语言默认字符串规则是以第一个0为结束,但并不是说第一个0之后的数据没有意义

2. 不算 但是\xee是一个字符... 如果你是把\写成了/的话

3. 什么环境?虽说什么环境也不可能是-1

4. -1对应的二进制数据的十六进制表示就是FFFF... 如果你的环境是16位的话

5. \0 \00 \000 八进制 \x00 十六进制

1.如果是格式化输出字符串的话\0是结束标志
2.首先这是两个字符串,所以有两个\0,然后是t,/,066,\xee,/n.066是一个八进制数,\xee是一个字符
3.c编译器对数据溢出都不会报错,需要程序员自己注意
4.%x是无符号数十六进制输出格式,-1肯定溢出了,-1用补码表示为ffff,无符号数没有符号位,系统就认为全是数字位。
5.\000是八进制的,其中\后插入三个八进制数字,\xhh是十六进制的,\x后可插入两个十六进制数