在c語言中放在前面和後面有什麼區別?詳細解釋pleas

2021-05-25 14:20:27 字數 6165 閱讀 1048

1樓:董俊錕

分兩種情況

【1】 作為單獨的語句 i++; ++i; 沒區別【2】 在賦值輸出等語句中,++放在前面, 先自加,然後在做其他的操作語句

++放在後面則是 先執行其他的操作,後自加

2樓:匿名使用者

i++是先賦值再計算

++i是先計算再賦值

可以簡單理解成前++優先順序高,後++優先順序最低於是有:

如:i=1 (i++)+(++i)+i

運算順序從左到右

先算第一個括號裡的i++。先賦值則1=(i++),原式變為 1+(++i)+i。再計算後++ ,i=2。

算第二個括號裡的++i。先計算 ,i=3。再賦值則3=(++i),原式變為 1+3+i。

最後就得到原式變為1+3+3=7,i=3

3樓:醉夢清楓

單獨使用無區別

在式子中使用的話

sum+=++i;這個是先對i進行自增1,再加到sum上,等同於:i+=1;sum+=i;

sum+=i++;這個是先把i加到sum上,再把i進行自增1,等同於:sum+=i;i+=1;

4樓:匿名使用者

如果p = 0;if(++p)時,p先加1,再進行if判斷,結果為真;如果是if(p++),則先使用p進行判斷,再對p加1,即,結果為假,但是執行完成後,p都為1

5樓:匿名使用者

b = ++a;

在前面的,先執行自增,也就是a = a+1;執行完再運算本行其他操作,即b = a;

b = a++;

則先運算本行其他操作,b = a;再執行自增 a = a + 1;

ps:一般不推薦一個表示式內有多個++a或者a++,一般只有一個,或者沒有。多個自增在一起,有時候存在歧義,在不同編譯器可能會出現不同結果

6樓:妙趣衡生

++i,先執行自加

++i,後執行自加

比如:j=i++,就是j=i之後,i=i+1j=++i,就是i=i+1之後,j=i

7樓:匿名使用者

符號放在前面需要先+1再賦值,放在後面則剛剛相反即先賦值再+1

8樓:小不點

放在前面相當於先給本身賦值了再運算

後面是先運算了再加

9樓:

放在前面:運算前加,後面:運算後加

10樓:勿戀勿忘

++在前為前增 右邊的變數先自增再將變化後的變數值賦值給左邊的變數,後增先講右邊的變數的值賦給左邊,然後右邊的變數再自增

11樓:匿名使用者

i++簡單的說就是先用i的值再加一,++i是i的值先加一再用

在c語言中, ++,--放前面和放後面的區別是什麼?

12樓:gta小雞

++在變數前:表示式的結果為變數的當前值+1++在變數後:表示式的結果為變數的當前值

例如有int a = 2,則表示式++a的值為3,表示式a++的值為2。

這兩個表示式求值完畢後,a的值均會變為3。

13樓:匿名使用者

++(或--)在前面就是先自增(或自減)1然後在運算。放在後面就是先完成後面運算再自增(或自減)1。

c語言中的"++在前"和"++在後"的區別是什麼?

14樓:運命に抗

++在前是先加1在運算, 在後面是先運算在加1例子如下。

int i=0;

printf("%d",++i);i加了1才給傳遞引數,所以輸出是1i=0;

printf("%d",i++)前傳遞引數,所以還是輸出原來的值是0printf("%d,i) 因為上面那句加了1所以 輸出是1

c語言++放在前面和後面的區別分析

15樓:匿名使用者

++在前是先加1在運算, 在後面是先運算在加1 例子如下。 int i=0; printf("%d",++i);i加了1才給傳遞引數,所以輸出是1 i=0; printf("%d",i++)前傳遞引數,所以還是輸出原來的值是0 printf("%d,i) 因為上面那句加了1所以 輸出是1

16樓:

int main()

單獨一句,無區別;作為引數就有區別。

17樓:大大的輔導輔導

u表示該常數用無符號整型方式儲存,相當於unsigned int;l表示該常數用長整型方式儲存,相當於longf表示該常數用浮點方式儲存,相當於float

在c語言的檔案中,像r,w,a,r+,w+,a+分別是什麼意思,前面三者與後面三者有什麼區別嗎?

18樓:雲盤雲存

r 開啟只讀檔案,該檔案必須存在。

r+ 開啟可讀寫復的檔案,該檔案必須存在。

w 開啟只寫檔案,若檔案存在則檔案長度清為0,即制該檔案內容會消失。若檔案不存在則建立該檔案。

w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立百該檔案。

a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。

a+ 以附加方式開啟可讀寫的文度件。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。

19樓:匿名使用者

r是隻讀,檔案已存在,指標在檔案頭;r+是讀寫方式,讀寫指標都在檔案頭。w是隻寫方式,w+是讀寫方式建立新檔案,讀指標在檔案頭。a是追加方式開啟檔案,指標指向檔案尾;a+是讀寫方式開啟檔案,讀從檔案開始,寫從檔案尾開始。

在c語言中,++是什麼含義?

20樓:熱詞課代表

最近」盤「字很流行,盤是什麼意思?為什麼能成為網路熱詞?

21樓:匿名使用者

單獨的++n和n++跟n=n+1沒有區別,就是對整型變數n加1放在具體表示式中會有區別

n=1;

a=n++*2 //先計算出表示式的值,再對n自增。結果a=2;n=2

a=++n*2 //先對n自增,再計算出表示式的值。結果a=4;n=2

不知道你看懂了沒。

22樓:匿名使用者

在c語言中,++的含義是:單目運算子,』++『是原始值累加1。

c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。

二十世紀八十年代,為了避免各開發廠商用的c語言語法產生差異,由美國國家標準局為c語言制定了一套完整的國際標準語法,稱為ansi c,作為c語言最初的標準。

23樓:匿名使用者

++n即n=n+1,呼叫前++

--n即n=n-1,呼叫前--

n--即n=n-1,呼叫後--

n++即n=n+1,呼叫後--

可以用main()

{int n=2

printf("%d",n++);

printf("%d",n);

n=2printf("%d",++n);

printf("%d",n);

)看出n++和++n的區別

24樓:匿名使用者

++n、--n是n最後的值為加1後的值 。 後面的相反

c語言中*p++和(*p)++有什麼區別?

25樓:慕容冰綃

我看書中解釋:*p++:是先取出*p的值,再使p加1//p是個指標,給p加1,相當於讓p指向了x所在地址的下一個位置,而對於x則是沒有任何影響

(*p)++:是使*p的值加1.

//*p則是p指向的位置對應的值,題目中是*q,所以此時的*q就是x的值,為3,當輸出*q之後,再給*q即x自加1,所以x就變為4

26樓:魔鬼小波的丶

這些人回答的,一群小屁孩蹭經驗的吧?這個題就應該是3,3,4.①printf("%d\n",*p++);p指標地址加一,所以x還是3。

②printf("%d\n",(*q)++);指標內容加一,但是注意是後加加,此時指標輸出的內容還是之前狀態x=3的。③最後printf("%d\n",x);,此時經過②指標內容已被加1,因為這個類似引用,故可指標可改變原來內容,原x也是4;如果你想出現3,4,4的答案第二個應該是++(*q)

27樓:吳帥帥

*p++是指下一個地址。

(*p)++是指將*p所指的資料的值加一。

c編譯器認為*和++是同優先順序操作符,且都是從右至左結合的,所以*p++中的++只作用在p上,和*(p++)意思一樣;在(*p)++中,由於()的優先順序比*和++都高,所以++作用在()內的表示式*p上。比如有:

int x,y,a=,*p=a,*q=a;

x=*p++;//執行這一句後x=a[0]=1,p=a+1y=(*q)++;//執行這一句後,y=a[0]+1=2,q仍然=a

28樓:春志學陳卓

區別大了。

*p只是一個指標,

**p是一個指向指標的指標

例如int

*p;那麼p就是指向int型別變數的一個指標。(即陣列)如果int**p;

那麼p就是指向int*型別指標的一個指標。(即指向一維陣列的指標,即二維陣列)

29樓:

c編譯器認為*和++是同優先順序操作符,且都是從右至左結合的,所以*p++中的++只作用在p上,和*(p++)意思一樣;在(*p)++中,由於()的優先順序比*和++都高,所以++作用在()內的表示式*p上。比如有:

int x,y,a=,*p=a,*q=a;

x=*p++;//執行這一句後x=a[0]=1,p=a+1y=(*q)++;//執行這一句後,y=a[0]+1=2,q仍然=a

30樓:匿名使用者

由於後置++在執行完後返回運算前的值,所以(*p)++返回的值是3.

但是此時x已經被修改為了4,所以後邊的輸出就是4了。

31樓:尹岑稽菀

while(p)

等價於while(p

!=0)

檢查的是p值是不是0,或者是不是空指標,如果是,則跳出迴圈,不再繼續迴圈體

而while(*p)

相當於while(

*p!=

0)檢查的是p所指向的地址中的資料是否為0,但前提是p不能為null

32樓:繆立軍

後自增操作符總是先把原值賦值給表示式,然後完成自增操作的所以printf("%d\n",*p++);相當於printf("%d\n",*p);p++;

而printf("%d\n",(*q)++);相當於printf("%d\n",*q);(*q)++

所以答案應該是3,3,4

33樓:殤心

*p++等價於*p (返回其值),p++;

*++p等價於++p,*p(返回其值);

(*p)++等價於*p,然後*p的值加1;

真的不知道某些人發很多別人看的很煩的東西是炫耀自己有很多學問嗎?

34樓:官俊暉宣華

*p表示p代表相應資料型別在儲存單元中儲存的首地址,而這個儲存單元儲存的是相應型別資料的數值,

**p表示p也表示地址,簡單的說,這個地址對應的儲存單元儲存的數也是一個地址,而不是數值,而這個被儲存的地址對應的儲存單元儲存的資料才是真正的相應型別的數值!

35樓:大傘夏

printf("%d\n",(*q)++); 先取出 (*q) = 3; 所以輸出3 等取完值後 *p再加1 才是你說的 4

36樓:匿名使用者

(*p)++:是使*p的值加1. 先取得的是*p的值.

c語言放在前面和後面的區別分析

在前是先加1在運算,在後面是先運算在加1 例子如下。int i 0 printf d i i加了1才給傳遞引數,所以輸出是1 i 0 printf d i 前傳遞引數,所以還是輸出原來的值是0 printf d,i 因為上面那句加了1所以 輸出是1 int main 單獨一句,無區別 作為引數就有區...

在英語中什麼放在前面什麼放在後面

陳述句中,一般主語在動詞的前面。比如i am writing a book。am 是動詞,i 是主語 英語中什麼時候副詞放在動詞前什麼時候放在動詞後 比如說well written和 muni 5 構成合成形容詞時,副詞放在核心動詞形式 多是非謂語動詞 之前。一般修飾謂語動詞,要用副詞,放在被修飾詞...

在C語言中清屏函式clrscr應放在什麼位置?拜託

主函式入口點之後.也就是緊跟入口點.希望採納 c語言中的清屏函式clrscr 應該怎麼用?void clrscr void 程式例 include int main 擴充套件資料c語言特點 1 c語言設計目版標是提供一種能以權簡易的方式編譯 處理低階儲存器 產生少量的機器 以及不需要任何執行環境支援...