我对输入ANSI C的问题很少: 1. char开头的“\ x”与char开头的0x之间有什么区别(或者在任何其他情况下为此)。 AFAIK,它们都意味着这是十六进制的......所以有什么不同。
谢谢!
答案 0 :(得分:5)
“\ x”之间的区别是什么? 一个char的开头为0x char的开头
区别在于0x12用于指定十六进制的整数,而“\ x”用于字符串文字。一个例子:
#include <stdio.h>
int main(){
int ten = 0xA;
char* tenString = "1\x30";
printf("ten as integer: %d\n", ten);
printf("ten as string: %s\n", tenString);
return 0;
}
printf应该输出“10”(试着理解为什么)。
将char转换为(unsigned)时,不是 (unsigned char) - 这是什么意思? 为什么(无符号)'\ xFF'!= 0xFF?
“unsigned”只是“unsigned int”的缩写。所以你要从char转换为int。这将为您提供平台使用的字符集中字符的数字表示。请注意,您为字符获取的值取决于平台(通常取决于默认字符编码)。对于ASCII字符,您(通常)将获得ASCII代码,但除此之外的任何内容都将取决于平台和运行时配置。
了解从一种类型到另一种类型的转换是非常复杂的(通常,但并非总是如此,取决于平台),所以如果可以,请避免使用它。但有时候这是必要的。参见例如need-some-clarification-regarding-casting-in-c