这个为什么运行不了啊

#include <iostream>
#include <time.h>
using namespace std;
int main()
{
   cout << "想不想听故事?";
   char input1;
   if(input1 == "想")
   {
       cout << "OK...咳咳";
       while(1)
       {
               cout << "从前有座山," << endl;
               _sleep(1000);
            cout << "山里有座庙," << endl;
            _sleep(1000);
            cout << "庙里有个小和尚," << endl;
            _sleep(1000);
            cout << "大和尚给小和尚讲故事:" << endl;
            _sleep(1000);
       }
   }
   else if(input1 == "不想")
   {
       cout << "好吧";
   }
   else
   {
       cout << "???";
   }
   return 0; 
}

报错:

官方微信2133688724
开始编译
编译失败/storage/emulated/0/Code/Project/CPlusPlus/从前有座山/main.cpp: In function 'int main()': /storage/emulated/0/Code/Project/CPlusPlus/从前有座山/main.cpp:8:17: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] if(input1 == "想") ^~~~~ compilation terminated due to -Wfatal-errors.

你定义了一个char类型的变量,但是并没有输入哦,得输入!
还有char是字符得用单引号!
还有就是我不知道你的编译器sleep报不报错,我的编译器是报错的,你先试试我的代码,不对我在帮你调试
详细改法见注释:

#include <iostream>
#include <time.h>
using namespace std;
int main()
{
   cout << "想不想听故事?";
   char input1;
   cin>> input1;//这里 你没有输入 
   if(input1 == '想') //这里 char是个字符得用单引号 
   {
       cout << "OK...咳咳";
       while(1)
       {
            cout << "从前有座山," << endl;
            _sleep(1000);
            cout << "山里有座庙," << endl;
            _sleep(1000);
            cout << "庙里有个小和尚," << endl;
            _sleep(1000);
            cout << "大和尚给小和尚讲故事:" << endl;
            _sleep(1000);
       }
   }
   else if(input1 == '不想')  //这里 char是个字符得用单引号 
   {
       cout << "好吧";
       return 0;//这里 输入不想直接结束程序 
   }
   else
   {
       cout << "???";
   }
   return 0; 
}

input1 首先你要输入呀
另外 这个比较 也不对,input1 是 char类型, 后面 "想" 这是字符串,相当于字符数组
下面的 不想 也是,这是字符串,一个字符 无法用 == 比较,
你要么用 string类,要么字符数组比较就用 库函数 strcmp

你的判断条件那块,在c++中字符数组和字符串常量是不同的类型。
在你的第8行 if(input1 == "想")这块,你可以用单引号将字符常量'想'替换字符串常量"想",if(input1 == '想'),或者将字符串常量转换为字符数组。
同理,你的第23行else if(input1 == "不想")这里也需要改一下else if(input1 == '不想')


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题的原因是代码中存在一些语法错误和逻辑问题。

    首先,变量input1没有被初始化,所以它的值是未定义的。应该在使用之前给它赋值。

    其次,input1是一个字符变量,所以不能使用双引号括起来的字符串来进行比较。你需要使用单引号括起来的字符来进行比较。

    此外,函数_sleep()不是标准C++函数,所以不能在该程序中使用。你可以使用sleep()函数(在<unistd.h>中)来暂停程序的执行。

    下面是修改后的代码:

    #include <iostream>
    #include <unistd.h>
    using namespace std;
    
    int main()
    {
       cout << "想不想听故事?";
       char input1;
       cin >> input1;
    
       if(input1 == '想')
       {
           cout << "OK...咳咳" << endl;
           while(1)
           {
               cout << "从前有座山," << endl;
               sleep(1);
               cout << "山里有座庙," << endl;
               sleep(1);
               cout << "庙里有个小和尚," << endl;
               sleep(1);
               cout << "大和尚给小和尚讲故事:" << endl;
               sleep(1);
           }
       }
       else if(input1 == '不')
       {
           cout << "好吧" << endl;
       }
       else
       {
           cout << "???" << endl;
       }
    
       return 0; 
    }
    

    这样修改后的代码应该可以正常编译和运行了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^