使用C合并ascii字符
我尝试了以下代码,但无法获得所需的输出。 结果应该是AB使用C合并ascii字符,c,char,decimal,ascii,bit,C,Char,Decimal,Ascii,Bit,我尝试了以下代码,但无法获得所需的输出。 结果应该是ABAB,它应该来自单个变量C int main() { int a = 'A'; int b = 'B'; unsigned int C = a << 8 | b; printf(" %c\n",C); return 0; }``` int main() { int a='a'; int b='b'; unsigned int C=a您试图只打印位于&C的单个字节,因此根据您的机器是否为little
AB
,它应该来自单个变量C
int main()
{
int a = 'A';
int b = 'B';
unsigned int C = a << 8 | b;
printf(" %c\n",C);
return 0;
}```
int main()
{
int a='a';
int b='b';
unsigned int C=a您试图只打印位于&C的单个字节,因此根据您的机器是否为little endian,您会得到“66”作为输出,或者如果您的计算机是big-endian,您将得到0作为输出。%c
将打印单个字符。如果您要打印字符串,您必须使用%s
并提供指向此字符串的指针。c中的字符串必须以null结尾,这意味着它们需要在文本和此字符载体之后再添加一个字符重置值\0
(零)
您可以在int
中执行此操作,但必须首先理解一些概念
如果您使用的是英特尔体系结构的计算机,大于一个字节的整数变量将以相反的顺序在内存中存储数据。这称为
因此,类似于0x11223344
(十六进制)的数字将作为字节序列44332211
存储在内存中
'A'
相当于数字65,或0x00000041
,如果输入32位整数,将存储为41 00
当您使用'A'时,请不要发布代码的图像-。请将其作为格式化文本发布。%c
将只读取一个字符/字节。您真的需要/想要为此使用位移位吗?int c='AB'
不是有效代码。因此,不清楚所需的结果是什么。注意:01000001是0x41而不是0x1000和010000100x42不是0x2000关于:inta='a';intb='b';
这些应该声明为unsigned
NOTint
不要问同一个问题两次!您的答案没有解决问题的这一部分:“结果应该是AB,它应该来自单个变量C”我想在输出中使用AB
。请告诉我所需的更改。将AB作为输出的一种方法是使用printf(“%c%c”、*((unsigned char*)&c)+1),c);@raqeeb,应该从一个变量中取出输出,否则我会执行类似printf(“%c%c”,a,b)的操作使用%s
的C=b给了我一个分段错误。您可能提供了一个无效的指针。您必须将&C
作为参数传递(指向C
),而不是C
本身。包含int main(){int a='a';int b='b';无符号字符C=a,再次使用sprintf('s',&C)
。