- 若有以下定義語句: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