2017-05-29 52 views

回答

1

在您的系统中,字符'1'编码为49. C要求字符'1'...'9'处于那么你的系统'9'的顺序和连续性被编码为57.所以,'91'被编码为57,然后是49.在十六进制中,这个0x39后面跟着0x31。如果考虑使用big-endian字节排序的双字节整数(可能是系统中的short [又名short int]),则它是0x3931或14641.因此,您的机器使用big-endian字节排序。

“91”是用一个值14641.在我的系统的int,int是大于charchar是-128到128,以便分配与该范围之外的整数一个char,给出了一个编译器警告。

现在,您的格式化打印调用使用“%d”格式说明符,该格式说明符用于常规长度整数。这意味着它会将整数在系统上的许多字节转换为十进制并输出。但是,你传递char值,所以它打印这些价值观为整数,或91和14641.


你可能意味着更多的东西是这样的:

char[] strVal1 = "1"; 
char[] strVal2 = "91"; 

printf("%s\n", strVal1); 
printf("%s", strVal2); 
+0

非常感谢你。 ! :) – smartnerd

相关问题