char a[1]; a[0]='0x35';
时间: 2024-10-12 21:07:04 浏览: 18
读取0x11,0x12赋值给char
5星 · 资源好评率100%
当你声明一个字符数组`char a[1];`并给它分配一个初始值`a[0] = '0x35';`时,你在尝试做的是将一个16进制数`0x35`转换为字符形式存储。在ASCII编码中,`0x35`对应字符值为`53`(十进制),但在C语言中,由于`'0x'`不是一个有效的ASCII字符,所以这种写法可能会导致一些意外。
通常的做法是先去掉`'0x'`,然后根据`0x35`表示的十进制数值转换成对应的字符,如果想要存储一个字符的16进制值,应该这样操作:
```c
char a[2]; // 确保至少能存放一个字符和结束符'\0'
a[0] = '0';
a[1] = 'x'; // 需要有单独的字符来标识这是一个16进制数
a[2] = '3';
a[3] = '5';
// 如果需要存储的是实际的数字5,应该是
// a[0] = '5';
// 或者更明确地
// a[0] = '5'; a[1] = '\0'; // 因为在这种情况下,一个字符数组就足够了
```
请注意,在实际使用时,`0x`通常用于表示后续是一个16进制数,并不会作为字符直接存储。如果你试图在文本中展示这个16进制数,你需要额外处理以显示正确的形式,比如`printf("%d", a[1]);`或`printf("\\x%hhx", a[1]);`。
阅读全文