C++ if语句求解惑

V-Chuang 2020-04-08 04:02:11
希望大佬帮小白解释下,以下代码输出的为什么是6,而不是3?


#include<iostream>
using namespace std;
int main()
{
int a=3;
if(a=5)
cout<<a+1<<endl;
else
cout<<a<<endl;
return 0;
}
...全文
142 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40290083 2020-04-08
  • 打赏
  • 举报
回复
7 10 11楼正解,
真相重于对错 2020-04-08
  • 打赏
  • 举报
回复
引用 11 楼 qq_46626477 的回复:
正如7楼所说,a=5是赋值。那是不是说只要a的赋值不是0,if(a=n)都是true。 所以if(a=-5)也是true,输出-4
你又犯了一个错误 如果 if(a=0)呢? 不要知其然,不知其所以然?
V-Chuang 2020-04-08
  • 打赏
  • 举报
回复
正如7楼所说,a=5是赋值。那是不是说只要a的赋值不是0,if(a=n)都是true。 所以if(a=-5)也是true,输出-4
真相重于对错 2020-04-08
  • 打赏
  • 举报
回复
按照c++的标准 if( 表达式) {1} else {2} 这个表达式总是转为bool 变量 然后根据转换后的结果确定执行 ,如果为true执行1,如果为false 执行2 那么 a=5 这个表达式返回5 把5转为bool,是true,因此执行1 这里我再提个问题: 如果 if(a=-5)则执行什么??请不要用电脑试。
chxchxkkk 2020-04-08
  • 打赏
  • 举报
回复
7楼回答是正确的。
V-Chuang 2020-04-08
  • 打赏
  • 举报
回复
我之前的理解是: 因为 int a=3; if(a=5)就不成立,所以跳到else输出3。
qq_24604661 2020-04-08
  • 打赏
  • 举报
回复
if(a=5)程序执行的时候,a赋值为5且if判定总为true,所以是6
真相重于对错 2020-04-08
  • 打赏
  • 举报
回复
对。。。。。。
V-Chuang 2020-04-08
  • 打赏
  • 举报
回复
那前面的 int a=3没用?
真相重于对错 2020-04-08
  • 打赏
  • 举报
回复
因为a=5 不是a==5 所以 执行完if(..)语句后a变成了5,打印a+1,不就是6吗?
V-Chuang 2020-04-08
  • 打赏
  • 举报
回复
嗯,我知道。但是题目就是这样的
真相重于对错 2020-04-08
  • 打赏
  • 举报
回复
if(a==5) 不是a=5

65,176

社区成员

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

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