⑴ c語言里邊m++與++ m區別是啥,求形象解答,謝謝!
若m=6;
a=m++;
則執行完該語句後a=6,m=7(賦值運算取自加之前的值)
若m=6;
a=++m;
則執行完該語句後a=7,m=7(賦值運算取自加之後的值)
如果單純有一行是
m++或者++m,沒有賦值或取值,那麼這兩句實際結果是一樣的,都是m的值增加了1。
(1)c語言m等價於什麼擴展閱讀:
優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表達式求值順序是從左到右。
優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。
相同優先順序中,按結合性進行結合。大多數運算符結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。
基本的優先順序需要記住:
指針最優,單目運算優於雙目運算。如正負號。
先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7
⑵ C語言習題,請高人指導解答!
1. sizeof(float)是(B)。
A. 雙精度型表達式
B.一個整型表達式
C. 一個函數調用
D. 一個不合法的表達式
滿分:5 分
2. 對於條件表達式(M)?(a++):(a--),其中的表達式M等價於(B)。
A. M==0
B. M==1
C. M!=0
D. M!=1
滿分:5 分
3. 若有定義:intx=7;floata=2.5,b=4.7;則表達式a+x%3*(int)(a+b)%2/4的值是(A)。
A. 2.5
B. 2.75
C. 3.5
D. 0
滿分:5 分
4. 下面四個選項中,均是C語言關鍵字的選項是(B)。
A. auto enumin clude
B. switch typedef continue
C. signenionscanf
D. if struct type
滿分:5 分
5. 下列關於switch語句和break語句的結論中,只有(B)是正確的。
A.break語句是switch語句的一部分
B. 在switch語句中可以根據需要使用或不使用break語句
C. 在switch語句中必須使用break語句
D. "以上三個結論有兩個是正確的"
滿分:5 分
6. 在x值處於-2到2,4到8時值為「真」,否則為「假」的表達式是(全都不是)。
A. (2>x>-2)||(4>x>8)
B. ((x<=-2)||(x>=2)||((x>4)||(x>=8))
C. (x<2)(x>=-2)(x>4)(x<8)
D. (x>-2)(x>4)||(x<8)(x<2)
滿分:5 分
7. 以下是正確的C語言標識符是(B)。
A. #define
B. _123
C. %d
D. \n
滿分:5 分
8. 以下敘述中不正確的是(B)
A. 在C程序中,調用函數時,只能把實參的值傳送給形參,形參的值不能傳送給實參
B. 在C程序的函數中,最好使用全局變數
C. 在C程序中,形參只是局限於所在函數
D. 在C程序中,函數名的存儲類別為外部
滿分:5 分
9. 已知字母A的ASCII碼為(65)10,變數ch1為字元型,則執行語句ch1='A'+'6'-'3';後,ch1中的值為(B)。
A. D
B. 68
C. 一個不確定的值
D. C
滿分:5 分
10. 若有定義:intA[3][4];能表現數組元素A[1][1]的是(沒有!C有點像,是不是寫錯了?(*(A+1))[1]正確)
A. (A[1]+1)
B. *(A[1][1])
C. (*(A+1)[1])
D. *(A+5)
滿分:5 分
11. 設int類型的數據長度為2個位元組,則unsignedint類型數據的取值范圍是(B)。
A. 0~255
B. 0~65535
C. -32768~+32767
D. -256~+255
滿分:5 分
12. 若x為float型變數,則以列程序段結果是(B)x=1234.6789;printf(「%-2.1f」,x);
A. 輸出格式描述符的域寬度不夠,不能輸出
B. 輸出為1234.7
C. 輸出為1234.6
D. 輸出為-1234.6
滿分:5 分
13. 下面四個選項中,均是合法轉義字元的選項是(A)。
A. \'' '\\' '\n'
B. "\''\017''\""'"
C. \018''\f''xab'
D. \\0''\101''xlf'
14. 有兩個字元數組a、b,則以下正確的輸入語句是(沒有正確的)。
A. gets(a,b);
B. "scanf(""%s%s"",a,b);"
C. "scanf(""%s%s"",a,b);"
D. "gets(""a""),gets(""b"");"
15. 下列四組選項中,均不是C語言關鍵字的選項是(A)。
A. define IFtype
B. get cchar printf
C. include scanf case
D. whilegopow
⑶ C語言中m+=i++表示什麼意思
m+=i++ 這是賦值運算符與自增運算符的綜合使用,該表達式等價於如下2條表達式:
m=m+i;
i++;
如果表達式換成m+=++i,則改表達式等價於:
i++;
m=m+i;
//因為是++i,所以i的值需要先進行加1,之後再參與表達式的運算;而i++是先將i的值代入表達式計算,表達式計算完後,i的值再加1
⑷ c語言m=n++
關於自增自減運算,很多書籍沒有把問題講清楚,在C語言里是這樣的:
1.後置運算:k++表示先運算,後自加。
意思是遇到k++了,我先把當前的k的值拿來參加運算,後面再去管它的自加。
那麼,【「後面」後到什麼程度呢?要後到當前的語句執行完,即遇到分號;表示
語句執行完了,所以k才自加1。】
如:int k=5,b=0;
b=k++;的意思就是,先算b=k(即b=5),遇到分號;表示語句結束,k才自加1,即k變為6。
2.前置運算:++k表示先自加,後運算
這個意思就是遇到++k了,先把k的值加了1,再往後執行別的。
如:int k=5,b=0;
b=++k;的意思就是,先把k自加1,即k為6,再算b=k(即b=6)。
掌握好這兩點,m++和++m也是一樣的道理。
看完原理:
例如 原值 m=1 n=2
m++==n
先運算再加1
1==2
結果就是0也就是false,最後m=2 n=2
================
++m==n
就是m先加1 再運算
2==2
結果就是1也就是true ,最後m=2 n=2
⑸ 對於條件表達式(M)(a++):(a--),其中的表達式M等價於
這個三元運算符就是if(M)...的意思,其實就是M為真的意思,在C語言中M為真就是M非零,而零就是假,所以就是M非假的意思,因此說的是對的。
對於條件表達式(M)?(a++):(a--),其中的表達式M等價於C
A、M = = 0
B、M = = 1
C、M ! = 0
D、M ! = 1
(5)c語言m等價於什麼擴展閱讀
若有多個條件表達式像這樣連在一起:x=<表達式1>?<表達式2>:<表達式3>?<表達式4>:<表達式5>···執行順序是從右到左依次判斷再求出最後的x,即所謂的右結合性。
注意:如果最後一個表達式是逗號表達式,注意逗號表達式的優先順序比條件表達式的優先順序低,實際運用中應該避免這種情況以免出錯。
例如: int a=1,b=2,c=3,d=4;則條件表達式x=a<b?a:c<d?c:d;的值為:1
⑹ c語言 問號表達式
你的意思就是如果M為真,也就是說M!=0,就執行a++,如果M為假,也就是說M==0,就執行a--。所以這個M就相當於判斷M是否等於0;如果還看不懂的話,你可以去看下C語言書上的條件表達式的那章,很簡單的,好好加油,祝你成功!~
⑺ 表達式(M)(a++):(a--),其中M等價於()A、M==0;B、M==1;C、M!=0;D、M!-1
一般來說,一個變數只有在不為0的時候才可以看成是true,A的選項實際上相當於!M,也就是false,所以只能選C。
⑻ C語言題!M與下列那個表達式等價 A.=0 B.=1 C.M==0 D.
!M:非M為真,就是M為假.C語言中把非0當做真,0當做假,M為假就是判斷M為0.所以判斷!M為真,就是判斷M==0.