使用此代码
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。
答案 0 :(得分:3)
您不应将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;
}
答案 1 :(得分:2)
在这一行
printf("The character code of '%c' is %d",putchar(x),putchar(x));
您两次致电putchar()
,这两次输出x。
您还将使用这两个调用的返回值来执行格式化输出。
putchar()
的返回值恰好是(成功的情况下)书面字符,这使它有些透明。
其顺序可能无法预测,但确实可以解释您观察到的结果。
比较https://en.cppreference.com/w/c/io/putchar
它指出
返回值
成功后,返回书面字符。