【问题标题】:Condition does not work? [closed]条件不起作用? [关闭]
【发布时间】:2016-06-28 23:42:18
【问题描述】:

当这个条件成立时,它不会采取以下行动 我做错了什么!?

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

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

【问题讨论】:

  • choice类型是什么?
  • 这看起来像 choicesS 都是变量。它们在哪里声明?你能发布一个可以编译的例子吗?
  • 由于代码不完整,您的问题无法回答。请发帖minimal complete and verifiable example

标签: c conditional-statements


【解决方案1】:

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

int choice;

然后,改变

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

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

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

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

【讨论】:

    【解决方案2】:

    你需要先声明choice才能使用它:

    char choice;
    

    那么你的条件应该如下:

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

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

    【讨论】:

      【解决方案3】:

      当您比较 char(至少看起来像)时,请确保它们在 ''

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

      【讨论】:

      • 不应该用strcmp吗?
      • 如果类型是字符串或 char* 或 char 数组。对于单个字符 '=' 就足够了。 @ClaudioCortese
      猜你喜欢
      • 2012-02-16
      • 2014-05-15
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多