使用此代码
void echo_char_code() {
int x;
printf ("Please enter a character:\n");
x = getchar();
printf("The character code of '%c' is %d", putchar(x), putchar(x));
printf(". \n");
}
int main() {
echo_char_code();
return 0;
}
但出于某种原因我的输出是
AAThe character code of 'A' is 65.
我想知道为什么“AA”出现在开头而不仅仅是我想要的'A'和65'。
您不应该将putchar(x)作为参数传递,而是使用变量x。
void echo_char_code() {
int x;
printf ("Please enter a character:\n");
x = getchar ();
printf("The character code of '%c' is %d", x, x)); // changing putchar(x) to x solves the problem.
printf (". \n");
}
int main() {
echo_char_code();
return 0;
}
在这一行
printf("The character code of '%c' is %d",putchar(x),putchar(x));
你两次调用putchar()
,输出x两次。
您还使用这两个调用的返回值来执行格式化输出。
putchar()
的返回值恰好是(在成功的情况下)书面字符,这使它有点透明。
这个顺序可能是不可预测的,但它确实解释了你观察到的结果。
比较https://en.cppreference.com/w/c/io/putchar 它指出
返回值 成功时,返回书面字符。