又双叒重名了 2021-10-06 23:29 采纳率: 100%
浏览 51
已结题

“0”与“假”的区别?

纯小白,想编个阶乘,却无法停止循环。
以下为编程内容
#include
using namespace std;
int main( )
{
int n;
while(cin>>n){
int a=1;
for(int i=1;i<=n;i++){
a*=i;
}
cout<<a<<endl;
}
return 0;
}
我想,当输入n为0时,是否能表示假,然后结束循环呢?我试了一下,输入0后并没有结束,而是输出了1,并可以继续输入,这是为什么呢?是我没有理解while么?还是其他问题?如果我要停止循环,只能加个if(n==0) break;了?
求指点,您的任何一句都将使我受益。
谢谢!

  • 写回答

5条回答 默认 最新

  • 关注

    cin>>n的返回值不是读取的n的值。

    cin>>n返回的也是一个cin对象,当一个cin对象作为条件选择、循环等的控制表达式时,编译器会将其转换为真值表达式,如果cin的iostate为goodbit,则这个真值表达式的结果为真,否则为假。

    输入一个非数字可以置位failbit,从而结束循环,当然这是一个非正常退出。

    正常退出可以用键盘模拟产生EOF,表示流输入结束了。在windows中可以输入ctrl+z,unix/linux中则为ctrl+d。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月15日
  • 已采纳回答 10月7日
  • 创建了问题 10月6日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?