C语言中putchar打印的结果的和字符变量被赋值时的变量一样吗?

例如
#include<stdio.h>
main()
{char A,B,C; B='1';C='A';
for(A=0;A<6;A++)
{ if(A%2) putchar(B+A);
else putchar(C+A);
}
}编译后打印的结果是A2C4E6
最新回答
枫以

2024-11-30 06:07:57

想实现purchar(‘+\n’)同时达到输出与换行的效果是不可行的,因为putchar语句是依次读取输出的数值直到遇到\0,比如putchar(123')就是3,putchar('1234')就是4,所以putchar('+\n')就是\n,即换行,既然你追求美观,那么就程序最后面(即return(0)前面。)增添一个printf("\n"),也不碍事!
九四鳁鲸

2024-11-30 01:36:53

首先要理解C语言中 "字符即数字", 但是这并不是说'1' == 1, 字符是数字到符号的一种映射(即ASCII码表给出的映射关系. 当然还有其他很多映射表, 比如UTF-8, 这种映射就叫做字符编码),
比如:
64 <===> 'A', 96 <===>'a', '1'<===>49.

所以尽管我们给的参数是'1', 但实际上计算机中存储的值是49, '1'只是这个数字在屏幕上的样子.

实际上,你可以传给putchar()任意数字,只要在其参数类型(char, 8bit)所表示的范围内( -128~127, 或0~255), 只要可以找到相应的映射字符, 就可以打印出该字符.

所以传给putchar()的参数是49或'1'没有本子区别, '1'只是49的另外一种表示方法. 同理, 如果参数是'1'+1<===>49+1=50 <===> '2', 'A'+1<===>64+1=65<===>'B'

甚至'1'+'A' <===> 49+64= 123 <===>'一个一定义的字符,但是可能在屏幕上显示不了,具体参照ASCII表'.

你的例子中 A:0~5, 参数一次是'A'+0, '1'+1, 'A'+2, '1'+3, 'A'+4, '1'+5, 即字符A2C4E6

明白了么?
雪紫∮冰雨

2024-11-30 02:00:19

putchar()的入口参数只能是一个字符,
putchar(B+A); 不合法吧
我走开你没负累

2024-11-30 02:01:08

实质就是ASC||码与字符的对应关系
快乐暗恋我

2024-11-30 04:54:39

编译器默认进行强制转换了吧,应该能过,你可以去华夏联盟问问看,到底是为什么