若有以下定义int m=5,y=2;,则计算表达式y+=y-=m*=y后的y值是
5个回答
展开全部
y值是-16。
从左往右分解,y+=y-=m*=y 就是 y=y+(y-=m*=y)
y-=m*=y 就是 y=y-(m*=y)
m*=y 就是 m=m*y
那么就等于
m=m*y; //m=10, y=2
y=y-m; //m=10, y=-8
y=y+y; //m=10, y=-16
扩展资料:
由于后缀表达式不需考虑运算符的优先级,因此计算较简单。计算过程为:从左到右依次扫描后缀表达式,遇到运算符,则与运算符前边连续两个操作数做运算。
由于遇到操作数时,不能立即进行计算,因此设立一个栈(操作数栈),用于存放操作数。具体运算过程如下:
1、从左到右依次扫捕后缀表达式,每次取出一个字符;
2、若字符是操作数,则入栈;
3、若字符是运算符,则连续出栈两个操作数,计算它们的值,然后把运算结果入栈;
4、重复步骤1~3,直至表达式结束,栈中最后一个元素即是后缀表达式的值。
展开全部
这种连接运算,其实很简单的,运算顺序知道了就OL!
运算顺序由右向左,首先运算m*=y值为10,再运行 y-=10值为-8,最后运行y+=-8值为-16,就这么简单,希望能帮助你……
运算顺序由右向左,首先运算m*=y值为10,再运行 y-=10值为-8,最后运行y+=-8值为-16,就这么简单,希望能帮助你……
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大哥的问题真是稀奇古怪。按照运算次序,先做m*=y,得到m=10,再做y-=m,得到y=-8,再做y+=y,得到y=-16。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
__int64 hash[120][100000];
int main()
{
int i,j;
__int64 lmax= 1;
lmax=lmax<<32;
for (i=3;i<110;++i)
{
hash[i][0]=i;
for (j=1;hash[i][j-1]<lmax;++j)
{
if (hash[i][j-1]%(i-1)==0)
{
hash[i][j]=hash[i][j-1]/(i-1)*i-1;
}
else
{
hash[i][j]=(double)(hash[i][j-1]*i)/(double)(i-1);
}
}
}
int T;
cin>>T;
while (T--)
{
int N,K;
cin>>N>>K;
int i;
for (i=0;;++i)
{
if (hash[K][i]>N)
{
break;
}
}
cout<<hash[K][i-1]<<endl;
}
return 0;
}
希望对你有帮助
using namespace std;
__int64 hash[120][100000];
int main()
{
int i,j;
__int64 lmax= 1;
lmax=lmax<<32;
for (i=3;i<110;++i)
{
hash[i][0]=i;
for (j=1;hash[i][j-1]<lmax;++j)
{
if (hash[i][j-1]%(i-1)==0)
{
hash[i][j]=hash[i][j-1]/(i-1)*i-1;
}
else
{
hash[i][j]=(double)(hash[i][j-1]*i)/(double)(i-1);
}
}
}
int T;
cin>>T;
while (T--)
{
int N,K;
cin>>N>>K;
int i;
for (i=0;;++i)
{
if (hash[K][i]>N)
{
break;
}
}
cout<<hash[K][i-1]<<endl;
}
return 0;
}
希望对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选c,p[0]指向a[1],也就是&a[1][0],二维数组在内存中的存储方式和一维数组一样也是顺序存放的,所以p[0]+1就是a[1][0]的下一个元素
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询