注册 登录
编程论坛 C++教室

俩道 C++ 运行题求解

简欢 发布于 2014-09-19 16:03, 389 次点击
#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了?
3 回复
#2
fl89622014-09-19 21:11
第一个题
#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
#3
domoke2014-09-21 11:14
同二楼,但是想指出一个小错误   =+ 和 += 是不一样的   b+=a++才等价于 b=b+a++    b=+a++等价于 b=正a++    这时候a前面的+是区分正负的
#4
fl89622014-09-21 13:41
回复 3 楼 domoke
谢谢指正,没注意看呀
1