标题:俩道 C++ 运行题求解
只看楼主
简欢
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-9-19
结帖率:0
已结贴  问题点数:20 回复次数:3 
俩道 C++ 运行题求解
#include<iostream>
using namespace std;
void main()
{ int i=1,j=1,k=2;
if((j++||k++)&&i++)
cout<<i<<j<<k;}
这个程序运行出来是222,我想问一下为什么j和i都自加了1,而k却没有呢?


#include<iostream>
using namespace std;
void main()
{
    int a=3,b=0;
    int *p=&a;
b=+a++;
cout<<*p<<b<<endl;
}
这个也是自加的问题,运行的结果是43,我想问为什么当给B赋值是a还是3,而指针p指向的时候就成了4了?
2014-09-19 16:03
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
得分:10 
第一个题
#include<iostream>
using namespace std;
void main()
{ int i=1,j=1,k=2;
if((j++||k++)&&i++)  //为什么K没有增加, 这里if 语句中的(j++||k++), 因为这里j,k是或的关系。j>0直接就判断条件成立了,就没k什么事情了。所以k没有增加
cout<<i<<j<<k;}
第二题

#include<iostream>
using namespace std;
void main()
{
    int a=3,b=0;
    int *p=&a;
b=+a++;
cout<<*p<<b<<endl;
}
a=3, b=+a++ 等价于 b=b+a++, b=3,a自增变为4. int *p=&a; p是指针,它取了a的地址。输出后变为4.所以是43

想抽苏烟了。
2014-09-19 21:11
domoke
Rank: 2
等 级:论坛游民
帖 子:36
专家分:71
注 册:2013-9-11
得分:10 
同二楼,但是想指出一个小错误   =+ 和 += 是不一样的   b+=a++才等价于 b=b+a++    b=+a++等价于 b=正a++    这时候a前面的+是区分正负的
2014-09-21 11:14
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
得分:0 
回复 3 楼 domoke
谢谢指正,没注意看呀

想抽苏烟了。
2014-09-21 13:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-436301-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018588 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved