这个程序i的结果是??

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:11:24
下面这个程序中的结晶果是:
k=0 j=0 i=1
k=1 j=0 i=2
k=1 j=0 i=1
k=1 j=0 i=2
Press any key to continue
我想知道为什么i的结果为什么有时是"1" 有时是"2"
这里面有什么规律呢?

#include <iostream.h>
void main()
{
int i,j,k;
i=1;j=1;
k=!j-- && i++;
cout<<"k="<<k<<"\tj="<<j<<"\ti="<<i<<'\n';
i=1;j=1;
k= !--j && i++;
cout<<"k="<<k<<"\tj="<<j<<"\ti="<<i<<'\n';
i=1;j=1;
k= j-- || i++;
cout<<"k="<<k<<"\tj="<<j<<"\ti="<<i<<'\n';
i=1;j=1;
k= --j || i++;
cout<<"k="<<k<<"\tj="<<j<<"\ti="<<i<<'\n

这是 && || 的原因,只要&&左面这项是0,那么&&右面这项不执行。i++不执行,所以i不变。
同理 如果||左面这项为1 ,右面这项不执行。
不知道这么回答你满意吗?

这个程序所执行的没有什么规律行呢。这个程序只是告诉你前置"++'和后置"++"的区别

这个题目就是考你对i++,和++i的理解:k=!j-- && i++;这条赋值语句是 !j--和i++去并,也就是说如果!j--和i++都是非0时k才为1;在这个过程结束后j减小1,而此时前面的!j--为0,i++便不执行;依次类推,后面的都用一样的方法可以得到结果。