我不明白为什么这段代码输出很奇怪。我出于好奇写了这个,现在如果我输入 55,它会显示一片叶子。还有许多其他事情取决于数量。我在谷歌中搜索了它,但没有找到任何可能的解释。
#include <stdio.h>
int main(){
char input='*';
int x;
scanf("%d",&x);
printf("%c",input*x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
字符被编码为整数,在 C 中通常默认为 8 位。有些是由ASCII定义的,有些则取决于您的操作系统、屏幕字体等。
\n该*字符的代码为 42。如果输入 55,则代码将计算 42*55=2310 并使用该值的低 8 位(即 6)作为要打印的字符。字符 6 是 ACK,它未被 ASCII 定义为可打印字符,但听起来您的系统正在使用类似旧版IBM 代码页 437 的内容,其中字符 6 显示为黑桃符号 \xe2\x99\xa0。
将字符代码乘以整数并不是一件很有用的事情。我不确定您希望通过该程序实现什么目标。如果您认为它会*像 Perl 的x运算符一样打印该字符的 55 个副本,那么它不会。C 没有内置方法可以做到这一点;您只需编写一个循环,*每次迭代打印一次,并迭代 55 次。