1樓:
沒錯,a++, 先顯示a, 再在 a 值+1,在後續程式中a值=a+1
++a, 先將a+1,顯示的a+1值,同樣在後續程式中a值=a+1
2樓:
我學的時候也是不怎麼懂,看看我寫的 看不懂再說
1字首和字尾遞增/遞減運算子 num1=5
num2=++num1; 字首遞增 num1=num1+1 num2=num1 num2=6 num1=6
字首遞增 num1先加1 num1便變為6 然後把得到值賦給num2
num2=num1++ 字尾 遞增 num2=num1 num1=num1+1 num2=5 num1=6
字尾遞增 num1先把值賦給num2 num2便等於5 然後num1加1 num1便等於6
字首,字尾遞減也一樣
eg:int a=5,b=1;
a=a+b; //a+b把值賦給a a便得到6
b=(a++)+b; //是字尾遞增 a先加b 把值賦給b為7 然後a加1得到7
a=(--b)+a; //b先減1 得到6 b便為6 然後加a得到13 把值賦給a
b=6 a=13; //結果
3樓:手機使用者
a++是先用a再加1
++a是先加1再用a
4樓:劉袁拓
寫的好像有點亂啊!不是很懂你的意思,但是a++是先用後加,++a是先加後用就是了
c語言中*a++和(*a)++有什麼不同?
5樓:茆德悟旻
也不算很難理解啊
說的通俗點
a++就是先把a當前的值
進行輸出或運算啥的
然後a在自增1
就是加1
++a也就先把a當前的值自增1
然後在輸出或運算啥的
好比a的值是1
b=++a
先把a當前的值1
自增1然後運算就是賦值給b
所以b=2
a=2b=a++
先把a當前的值1運算
就是賦值給b
所以b=1
然後a在自增1所以a=2
++--是1元運算副
具有右綜合性
優先順序高過
邏輯算術
賦值關係等這些運算副
6樓:度浩麗局妙
1,表示式的
值不同,++a的值是原a的值加1,a++是原a值例1int
a=1,
b;b=++a;
printf("%d",b);
例2int
a=1,
b;b=a++;
printf("%d",b);
2,++a可以做左值,a++不可以
例1int
a=1,
b=5;
++a=b;
printf("%d",a);
例2int
a=1,
b=5;
a++=b;/*這裡是個編譯錯誤*/
printf("%d",a);
7樓:閩恨甲瑾
hahugo88的回答很正確,這個意義必須掌握好哦!
我就是因為這個概念模糊考試丟了10分
8樓:澤男君
作為單獨的語句,a++;與++a;並沒什麼區別
但是b = a++;和b = ++a就有區別了
a++這個式子的返
回值是a,所以b = a++相當於b = a,然後a = a+1;
++a的返回值是a+1;所以b = ++a相當於a = a+1;然後b = a;
c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。
二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。
9樓:夜神月
優先順序 () > ++ > *
*a++ 先執行++ 再執行 * 即指標先移動一個位置,在對移動後指標所指位置解引用取值。
(*a)++ 先執行*a 再執行++ 即先對指標所指位置解引用取值,再對這個值自增加1.
10樓:滄海雄風
*a++ 和(*a)++
區別 一個是 指標後移 一個是指標指向的內容自加舉例int *a, b[2]=,c;
a = b;
c=*a++ 那麼 a 指向1 則c等於2c=(*a)++ 那麼 c 等於2
過程不一樣而已
舉例子 一個是別人讓你移動一格
一個是你自己移動一格
11樓:
優先順序的關係自增的級別要高
c語言中a++和++a的問題
12樓:靖健幸巍
++在前先加1再進行運算,++在前的運算級別比=優先順序高;
++在後先賦值再預算,++在後的優先順序比=號優先順序低。
第一次輸出結果為:a=5,b=(a+1)*((a+1)+1)=20;
第二次輸出結果為:b=(a+1)*(a+1)=16,a=a+1=5;
13樓:紀融雪貴鑠
inta=0
;a++
,這個時候先賦值然後才加,所有a=0;
++a,先加然後才賦值,所以:a=1;
就像英語的就近原則一樣,誰在前就優先考慮。
14樓:韋邈眭問寒
首先只要知道
x++的值是
x,這個x沒有加1
就是說x=0
x++=0
但是x=1
所以結果很簡單
就是s+=x++=0
s=s+0=0
結果為0
15樓:愛氣歐陽思天
前加加,先用後加;後加加,先加後用。
a=10;
b=a++;
c=++a;
*************************====上述表示式等價於:
a=10;
b=a;
//後加加先用的過程。
a=a+1;
//後加加後加的過程。
a=a+1;
//前加加先加的過程
c=a;//前加加後用的過程
*************************===所以結果是:
a=12
b=10
c=12
16樓:緱剛偶懷蕾
s=0;x=1;s+==x++
就是s+=x運算完了++再進行
17樓:春亙傅雨筠
a=3;b=
++a*
++a;
先++a,
++a,a=
5;b=25
a=3,b
=++a*a
++;先++a,;a=
4;b=a
*a=16;
再a++;a=5
18樓:屠暉終蕭曼
在s+=
x++中先進行s=s
+x,在進行x=x+1.
19樓:厙顏牛傲冬
不是的,你試試改下存放地方。再者就是軟體程式有錯誤,退出再進過
(*a)[]與(*a)[][]問題,c語言
20樓:江花海松
#include
#include
#define m 10
int a[m][m] = ;
/**************found**************/
void fun(int *a[m], int m)//不理解為啥(*a)[m][m],*a[m]不行, *a[m]可行,(*a)[m],也好使
{ int j, k ;
for (j = 0 ; j < m ; j++ )
for (k = 0 ; k < m ; k++ )
/**************found**************/
a[j][k] = (k+1) * (j+1);
main ( )
{ int i, j, n ;
fun ( a, n ) ;
for ( i = 0 ; i < n ; i++)
{ for (j = 0 ; j < n ; j++)
printf ( "%4d", a[i][j] ) ;
printf ( "\n" ) ;
請看這個例子,,使用不對就出現這個情況
(*a)[m]和*a[m][m]這兩個都可以, *a[m],(*a)[m][m]就不行, 這是由於你沒理解:指標陣列和陣列指標的區別,
int *a[n]是指標陣列(也就是說其本質上是陣列,但裡面存放的都是指標)
int (*a)[n]是陣列指標(本質上是一個指標,而且是一個指向陣列的指標)
21樓:仙戈雅
(*)[n]是指向由n個元素組成的一維陣列的指標。你可以理解為行指標。通常可以指向一維二維陣列。
(*) 通常是指向三維四維陣列的指標。
c語言的問題 a = (++a)+(++a)+(++a)+(++a) 計算原理
22樓:與子如初見
從右往左編譯,從左往右輸出。
3+34+3+3
5+4+3+3
(5+5)+(3+3)
後面的就不知道了。
應該是5+4*4+4
5+5*4*4
23樓:菩提樹下
第一個:後面的++a執行完了前後都是3,結果是3+3=6
c語言(a++)+(a++)+(a++)和(++a)+(++a)+(++a)
24樓:
a=3時,(a++)+(a++)+(a++)=9毫無疑問。
(++a)+(++a)+(++a)有點情況:有些編譯器解釋先算3個++a,再加起來,就為18;而有的編譯器卻先把前兩個算出來為10賦給一箇中間變數,再算最後一個++a為6,再把二者加起來等於16。
25樓:
a=3時,
因為a++是變數a先參與其他運算再加1,所以(a++)+(a++)+(a++)實際上是3+3+3=9,運算後a的值是6.
++a則是先求a=a+1,然後再做其他運算,所以(++a)+(++a)+(++a)實際上是5+5+6=16,運算後a的值是6.
26樓:匿名使用者
++a是在用變數a前將變數a增加1,
a++是在用變數a後將變數a加1,所以
(a++)+(a++)+(a++)比(++a)+(++a)+(++a)的結果少3。。。
可以這麼翻譯這段語句:
sum=0;
a=3(++a)+(++a)+(++a)
翻譯過來就是
a=a+1;
sum = sum+a;//a=4
a=a+1;
sum = sum+a;//a=5
a=a+1;
sum=sum+a;//a=6
結果就是4+5+6 =15
(a++)+(a++)+(a++)
翻譯過來就是
sum=sum+a;//a=3
a=a+1;
sum=sum+a;//a=4
a=a+1;
sum=sum+a;//a=5
a=a+1;
結果就是3+4+5 =12
c語言中x=(a++)*(++a)和x=(++a)*(a++)運算後是多少?
27樓:匿名使用者
令i=3;
++i,i++;都是du
zhi將i加1,但是
令x=(++i); y=(i++);
++i是返回i加1後的值,故dao等於4即版x=4;
i++是返回i加1之前的值,故還是等於3即y=3;
樓主這時權的疑問來了:
為什麼不是12 和16呢?
但再這語句結束後,i都等於4;(***注意這句話***)注意:x*y,這句話,是先對x裡面的東西進行計算,對y裡面的東西進行計算,誰先計算不一定,可以看成是同時的進行計算的。在這之後(注意這句話,下面用到的),在進行乘法運算!
注意:在這之後,說明那個(++i)和(i++)語句執行完畢,再看上面的括號裡有***那句,明白了嗎?此時x和y都等於4,所以是16不是12;
舉個例子:
int i = 3, j = 3;
j++;
printf("%d, %d",(i++), j);
輸出的是3和4,不信試試。
C語言中的問題,幾個C語言中的問題???
將憶梅僑寶 getchar和putchar是c語言中的函式 getchar從鍵盤讀入字元 putchar在螢幕上顯示字元 吳幼珊佘溶 getchar和putchar是c語言中的函式,叫作標準字元輸入輸出函式,這裡的標準表示輸入是從標準裝置輸入的,即鍵盤,輸出是從標準裝置輸出的,即顯示器。這兩個函式包...
c 語言問題?在c語言中的問題?
c 語言是c語言發展起來的,所以繼承了c語言幾乎所有的特點,但c 語言又有自己的個性。c語言是一種程序導向的程式語言,而c 主要是程序導向的,因此c 有類的概念,而c語言就沒有。c 的功能強大,編譯器複雜,適合高階程式的設計和,c語言的編譯器簡易,適合低端程式。邏輯混亂,參考正常的實現吧。c語言的基...
c語言指標pa 與pa問題,c語言中,假設pa是一個指標,那麼 pa 的作用是什麼
p 先取p值做 p運算,再使p加1即指向向一閣元素,是的 是的,pa 和 pa就是誰在前先算什麼,pa 就是先算 pa,在算 pa先算 在只想pa c語言中,假設pa是一個指標,那麼 pa 的作用是什麼 pa 包含兩個語句,一 pa pa 1,即pa指向的地址的值加1,二pa pa 1,即指標後移一...