【发布时间】:2016-01-29 02:57:11
【问题描述】:
我有一个由两部分组成的简单程序。
一部分询问您最喜欢的号码,然后返回您最喜欢的号码。
另一部分询问您最喜欢的字母是什么,并返回该字符的 ASCII 码。
各部分相互独立工作,当代码中最喜欢的字母部分在代码中最喜欢的数字部分前面时,两个部分都按顺序正确执行。
但是,当我修改代码的顺序以使最喜欢的数字部分位于最喜欢的字母部分之前时,我遇到了问题。输出允许我输入我最喜欢的数字,然后它会扫描并返回。然后它只打印程序的其余部分,不允许我输入我最喜欢的字母。
正确运行的代码:
#include <stdio.h>
int main() {
int favorite_number;
char favorite_letter;
int favorite_letter_code;
/* FAVORITE LETTER */
printf("Enter your favorite letter> \n");
scanf("%c", &favorite_letter);
favorite_letter_code = (int)favorite_letter;
printf("The ASCII code for your favorite letter is is %d\n",
favorite_letter_code);
/* FAVORITE NUMBER */
printf("Enter your favorite number> \n");
scanf("%d", &favorite_number);
printf("Your favorite number is %d!\n", favorite_number);
return 0;
}
工作不正常的代码(只需切换最喜欢的字母和最喜欢的数字部分):
#include <stdio.h>
int main() {
int favorite_number;
char favorite_letter;
int favorite_letter_code;
/* FAVORITE NUMBER */
printf("Enter your favorite number> \n");
scanf("%d", &favorite_number);
printf("Your favorite number is %d!\n", favorite_number);
/* FAVORITE LETTER */
printf("Enter your favorite letter> \n");
scanf("%c", &favorite_letter);
favorite_letter_code = (int)favorite_letter;
printf("The ASCII code for your favorite letter is is %d\n",
favorite_letter_code);
return 0;
}
为什么这个顺序会影响输出?
【问题讨论】:
-
你试过检查scanf的返回码吗?