65,211
社区成员
发帖
与我相关
我的任务
分享1.
int n=5,a=-1,b=3;
switch((--n)%4){ //n = 4; ((--n)%4) = 0;
case 0: n++; //n = 5;
break; //跳出
case 1: n*=a++;
case 2: n+=--b;
case 3: --n;
deafult:n++;
int a = 2, b = 7;
int x = 2.5 + 7.5 / a;
double y = a + b * 1.0 / a;
double z = b / a + b / (double)a + double( b/a );
第二题:
int a = 2.5, b = 7.5;
//其实a=2 b=7,小数点后面的会被强制扔掉
int x = 2.5 + 7.5 / a; //x=2.5+7.5/2=2.5+3.75=6.25=6
double y = a + b * 1.0 / a; //y=2+7*1.0/2=2+3.5=5.5
double z = b / a + b / (double)a + double( b/a );
//z=7/2+7/2.0+7.0/2.0=3+3.5+3.0=9.5 只有中间那个为3.5
1. int n=5,a=-1,b=3;
switch((--n)%4){
case 0: n++;
break;
case 1: n*=a++;
case 2: n+=--b;
case 3: --n;
deafult:n++;
} 問題:n=幾多?(請列出步驟及解釋)
-------------------------
--n:先减后用,所以是(--n)%4=(5-1)%4=0
case 0:4++;break;
最终:n=5
----------------------------------
2. int a=2.5,b=7.5;
int x=2.5+7.5/a;
double y=a+b*1.0/a;
double z=b/a+b/(double)a+(double)(b/a); //这是z吧??记得最后一个double加括号
問題:z=幾多?(請列出步驟及解釋)
------------------------
a=2,b=7//简单,不用多说
x=2.5+7.5/2=2.5+3.75=6.25=6
y=2+7*1.0/2=2+3.5=5.5
z=7/2+7/2.0+(double)(7/2)=3+3.5+3=9.5
记住,计算的时候,int型的转换是向0取整,-2.5=-2,2.5=2
多种类型混合运算的时候:char.short转换为int,float转换为double,然后计算了再取舍
比如:z的计算,7/2,int/int,没啥特殊的,为3
7/2.0,为int/float,int提升为float,然后float/float转换为double/double
--------------------------
3. int n=5,a=4,b=0,c=8;
if(b <=6&&c>4||a++==6)
n++;
if(a!=4||b>5||c <=9)
n+=a++;
if(c <=2||a>=5&&b--=0)
n*=a++;
問題:n=幾多?(請列出步驟及解釋)
---------------------
第一个if满足条件,进入:n++,n=6
第二个if满足条件,进入:n+=a++,先用a,后对a加加,所以n+=4 n=10 ,a=5
第三个if满足条件,进入:n*=a++,先用a,后对a加加,所以n*=5 n=50,a=6
在||与&&的时候,&&优先级高于||
而||在判断前面为真的时候,后面就不进行判断
而&&在判断前面为假的时候,后面就不进行判断
-----------------------
2. int a=2.5,b=7.5; //a=2 b=7
int x=2.5+7.5/a; //7.5/2=3.75, 2.5+3.75=6.25, 转化为int, x=6
double y=a+b*1.0/a; //被加数7*1.0/2,因含有1.0,转化为double计算,值为3.5。 固y=5.5
double z=b/a+b/(double)a+double(b/a); //7/2 = 3, 7/(double)2 = 3.5, double(7/2)=double(3)=3. 固z = 9.5
int n=5,a=4,b=0,c=8;
if(b <=6&&c>4||a++==6) // b<=6和c>4同时成立,所以a++==6不执行
n++; // n=6; a=4
if(a!=4||b>5||c <=9)
n+=a++; // n=10; a=5
if(c <=2||a>=5&&b--==0) // 这里加了个=
n*=a++; // n=50; a=6