- 若有以下定义语句:int a=5;printf("%d\n",a++);则输出结果是()
解析:a++ 即先使用再自增,a的初始值即为5,则先使用,输出结果为5
举个例子:
int a=5,b;
b=a++;//等价于 b=a;a=a+1
printf("%d,%d",a,b);//结果很明显 6,5
这道题可以直接把printf("%d\n",a++);当成printf("%d\n",b);这样就好理解了,a++就是b的值罢了
如果对a++还没有理解,参考我的另一篇文章https://blog.csdn.net/qq_41264055/article/details/86553172
- 若定义x和y为double型变量,则表达式x=1,y=x+3/2的值是()
解析:逗号表达式,y=x+3/2;首先,先乘除后加减,3/2—>1然后y=x+1 —>y=1+1;由于y为double即y=2.0
- int c1=1,c2=2.c3;c3=1.0/c2*c1;则执行后,c3中的值是()
解析:1.0 / c2 * c1 —>1.0/21—>0.51—>0.5 然后强制类型转换int即为0
- 有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4);执行后x的值为()
解析:(float)(y3+((int)y)%4)—>(float)(y3+(5%4))—>(float)(5.5*3+1)—>(float)17.5
最后x为int,将(float)17.5强制转换为整形赋值给x----->即x的值为17
- 设int i=2,j=3,k=4,a=4,b=5,c=3;则执行表达式(a=i<j)&&(b=j>k)&&(c=i,j,k)后,c的值是()
解析:&&与表达式,a=i<j 为真,继续执行,b=j>k,结果为假,整个条件语句结束,最后c=i,j,k也跟没有运行,即c还是原来的值,即初始值c=3