24小时热门版块排行榜    

查看: 3643  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xianbeihe110

木虫 (正式写手)

工作邮箱:hxysdju@163.com

[求助] 求大神解释下if语句中括号中的内容的作用判断求助以及输出结果时,自增自减的判断求助 已有6人参与

*********************************************************************************************

以下是实例:望大神可以通过解释该实例来帮助我理解if语句和自增自减
#include <iostream>
using namespace std;
int main()
{
        int a=3;
        if(a=5)
                cout<<a++<<endl;
        else
                cout<<a<<endl;
        return 0;
}
答案是输出5.
问题1:if(a=5)中,a=5是赋值对吧?之后不是要判断该表达式的值是否为ture或非0,则执行cout<<a++<<endl;否则执行cout<<a<<endl;
那我要为啥判断是ture或非0呢?难道是a=5(非0),所以是执行cout<<a++<<endl;语句吗?
问题2:如果问题一的答案是肯定的,那么为啥输出的值不是6,而是5呢?后自增时不是先用,后加吗?计算出来不是a++的值吗?
怎么输出的是a的值?这是为什么?为什么?为什么?
大神呐,顺便能帮我总结下这其中的规律吗?
回复此楼
工作联系方式:18817774880/QQ:1024015822
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cloudstone02

新虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
if (cond)语句中的 cond是逻辑值,大于0的算逻辑真,否则是逻辑假。所以,if (a =5) 括号内的运算为先,先执行a = 5的赋值运算,然后才是 if (a),这时是逻辑真,所以执行 cout << a ++ << endl.

你也可以试验一下 if (a = 0).
4楼2014-07-02 04:26:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

liujiankeng

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
if 是判断a 是否等于5
a++是先引用,后加,即先输出a值之后再加;++a是先加,后引用。
你可以在 cout<<a++<<endl;
后再加一行 cout<<a<<endl;看看输出的是不是6
不认真你就输了
2楼2014-07-01 20:57:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

forceair

铜虫 (初入文坛)

【答案】应助回帖

感谢参与,应助指数 +1
if(a=5)这句有问题的,a=5是赋值语句,不是比较,要判断a与5是否相等,用if(a==5)这样才对。如果以你编写的,程序就认为是if(5)为真,则执行,a++就是先用再对a本身加1,所以a最后的值是6,a++的值是5.
成功与借口不能在一个屋檐下~
3楼2014-07-01 22:38:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nenugdi

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xianbeihe110: 金币+10, ★★★★★最佳答案, 大神讲的很清楚 2014-07-02 19:27:47
问题1:a=5是赋值表达式,它的值由等号左边值决定,所以(a=5)的值是5,非0,所以是true。
问题2: cout<<a++<<endl; 是人写出来的一种简化方法,计算机编译后的语句应该是
           cout<<a<<endl;
            a=a+1;
所以输出是5.但最终a的值是6.
总结:计算机语言是形式语言,其规则并不复杂。学习者需要熟记规则和语言提供简写的方法,如a++
5楼2014-07-02 08:20:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +6 scalable 2026-08-24 6/300 2026-08-24 20:28 by 苦寒来香
[基金申请] filecode,4个jtjc了 +14 ziyangfang 2026-08-19 17/850 2026-08-24 18:37 by 哈哈蛤?
[基金申请] 2026国自然函评费到账 +17 羊腰板 2026-08-21 19/950 2026-08-24 16:52 by iaeyuan
[基金申请] 建议基金发布提前给出明确的时间点 +13 kulium 2026-08-21 16/800 2026-08-24 16:27 by superceng
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +17 医学老男孩 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[基金申请] 估计是周四 +4 archvillain 2026-08-18 4/200 2026-08-24 13:53 by zzuzxg
[基金申请] 范进中举一文的中心思想 +6 炎黄贵胄 2026-08-22 7/350 2026-08-24 11:58 by 6543yes
[基金申请] 朋友圈看到的 +7 wangzilk 2026-08-18 9/450 2026-08-24 10:50 by cmrandy
[基金申请] 明天应该可查了!? +4 chengyan1220 2026-08-23 4/200 2026-08-24 08:47 by gloomy6159
[基金申请] 什么时候开奖? +10 CrisMessi 2026-08-18 11/550 2026-08-24 06:50 by 开心的小狮子
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 今天基金会出结果吗?20260819 +16 kkkl_v 2026-08-19 17/850 2026-08-22 16:12 by 阿布Abu
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[论文投稿] 投稿咨询 +5 wwm09 2026-08-17 7/350 2026-08-21 10:11 by 期刊论文帮手
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
信息提示
请填处理意见