Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C合并ascii字符_C_Char_Decimal_Ascii_Bit - Fatal编程技术网

使用C合并ascii字符

使用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
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
NOT
int
不要问同一个问题两次!您的答案没有解决问题的这一部分:“结果应该是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)