条件不起作用?

时间:2016-03-14 03:17:45

标签: c conditional-statements

当这种情况出现时,它不会采取以下行动 我做错了什么!?

int main(){
printf("Press t/T for Tan x\nPress s/S for Sin x\nPressc/C for Cos x\n\nPress * for exit the program..");
scanf("%c",&choice);


    if(choice==s||choice==S){
        printf("Enter....etc");
        ......etc

这种情况根本不适用于我 请帮忙

3 个答案:

答案 0 :(得分:1)

您需要在使用之前声明choice

char choice;

然后您的条件应如下:

if(choice=='s'||choice=='S')

choice属于char类型,因此您需要将其与char进行比较。您可以使用单引号轻松制作字面值。

答案 1 :(得分:0)

在您比较char时(至少看起来如此),请确保它们位于''

 if(choice=='s'||choice=='S'){

答案 2 :(得分:0)

首先,通过在开头添加以下语句来声明choice

int choice;

然后,改变

if(choice==s||choice==S){

if(choice == 's' || choice == 'S'){

这是因为sS是标识符,可以是变量或函数的名称,而's''S'是字符常量,代表int s,其值为包含字符的ascii值。例如,s与115相同,S与83相同。您应该使用字符常量,因为字符在C中存储为整数值。

BTW,scanf(" %c", &choice);似乎更好,因为它可以丢弃所有烦人的空白字符(如果有的话),如'\n'。在这种情况下使用scanf("%c", &choice);不会导致问题,但如果您想多次输入s,最好添加前导空格。