&&操作符?

C加伽 2014-05-02 12:15:26

int const M=2;
int a[M];
int x,i=0;
while(i<M && cin>>x)
{
cout<<"x="<<x<<" ";
if(x==0)
break;
a[i]=x;
cout<<"a["<<i<<"]"<<a[i]<<" ";
i++;
cout<<endl;
}



在终端输入:
1空格2空格3空格0
x=1空格a[0]=1
x=2空格a[1]=2

问题:
1.上面程序,第三次循环时,while语句,&&左边是真,右边是假。
整个表达式是:假。
所以,继续循环。
对么?
如果是这样,为什么,不打印:x=3呢?
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2014-05-02
  • 打赏
  • 举报
回复
引用 5 楼 mujiok2003 的回复:
第三次循环式i为2 , 所以 i < M 为false, 不再进入循环体。
也不再执行 cin >> x
mujiok2003 2014-05-02
  • 打赏
  • 举报
回复
第三次循环式i为2 , 所以 i < M 为false, 不再进入循环体。
C加伽 2014-05-02
  • 打赏
  • 举报
回复
更改: 在终端输入: 1空格2空格3空格0回车 终端输出是: x=1空格a[0]=1 x=2空格a[1]=2
C加伽 2014-05-02
  • 打赏
  • 举报
回复
《C++Primer》第四版 5.2 关系操作符和逻辑操作符 仅当逻辑与(&&)操作符的两个操作数都为true,其结果才得true。 --------- 楼上: 书上是这么说!
Morrisss_ 2014-05-02
  • 打赏
  • 举报
回复
&&和||,这两个运算符的短路求值,在C++ Primer里讲的很清楚了。&&,前假后不判断,||,前真后不判断。
Morrisss_ 2014-05-02
  • 打赏
  • 举报
回复
第三次循环的第一个条件都不满足,x都不用输入了。循环也进不去,怎么输出3
C加伽 2014-05-02
  • 打赏
  • 举报
回复
楼上: 对。 有i<M,控制循环。 if语句就没什么意义了。可以省略它。 对么?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧