C語言中的問題,c語言中 p , p 的問題

2022-11-13 08:15:11 字數 5956 閱讀 2253

1樓:匿名使用者

講一下vc6.0的流程

1.--a=0 //前置自減運算子先運算,結果使a=02.(a++) +(--a) =0 //後置運算子在表示式中先使用,後運算,所以a++的值還是0

3.0+(a--)=0 //後置運算子在表示式中先使用,後運算,所以a--的值還是0

4.0+(++a)=0+1=1 // 前置運算子先運算,結果使a變為1 ,所以結果sum=1

運算後,a的值還要做兩個運算,先--再++所以不變,仍為1以上流程是計算機中vc6.0彙編產生的真實流程,可以自行參考彙編**在vs2005下的結果是4

2+1+0+1=4,所以vc6.0的結果是比較令人費解的

2樓:

m=3->

m++=3x

=-m++

->x=

-3,m=4

n=4->

++n=5x

=x+8/++n

->x=

-3+8/5=-3+

1=-2最後輸出-2

m++的值=m

++n的值

=n+1

8/5=

1,沒問題吧

至於x=-m++;

/* ++優先順序高於-

*/你不用考慮優先順序問題

肯定是m++先執行

-m返回的是右值,而自增運算需要操作左值

不信你加個括號試試x

=(-m)++

3樓:

if(x++>5)

這樣寫就是先

判斷x>5

然後++

如果是這樣if(++5>5)

就是先執行++

在判斷x>5

4樓:仇翠花運寅

你的語句有兩個錯誤

應改為char

ch;int

s=0;

for(ch='a';ch<'z';++ch)if(ch%2==0)

s++;

printf("%d",s);

執行結果是12

5樓:匿名使用者

我的執行後sum是4呀

a++ = 1;此時a的值變為1 + 1 = 2;

--a = 1;此時a的值變為2 - 1 = 1;

a-- = 1;此時a的值變為1 - 1 = 0;

++a = 1;此時a的值變為0 + 1 = 1;

6樓:匿名使用者

sum=1因為編譯器的問題導致

一句話沒執行完,編譯器不知道a的值到底變沒變,所以無法確定.

7樓:

1.執行(a++),a為1不變

2.--a,a為0

3.a--,a為0不變

4.++a, a為1

sum = 0+0+0+1;

8樓:

yq_sun2008說的就根本不對

4和16.0是1

6.0以上的版本是4

編譯器不同產生的結果就不同

9樓:辜芬鮮淑穆

for(ch='a';ch<'z';++z)這裡錯了吧.

要++ch吧...

10樓:匿名使用者

sum=2+1+0+1=4

怎麼會等於1呢?搞不懂

11樓:匿名使用者

執行這段**結果是4,怎麼會是1呢

c語言中*p++,*(++p)的問題

12樓:

*p++ 先取指標p指向的值(陣列第一

個元素1),再將指標p自增1;

(*p)++ 先去指標p指向的值(陣列第一個元素專1),再將該值屬自增1(陣列第一個元素變為2

*++p 先將指標p自增1(此時指向陣列第二個元素),* 操作再取出該值

++*p 先取指標p指向的值(陣列第一個元素1),再將該值自增1(陣列第一個元素變為2)

13樓:最大的_大寶寶

優先順序已經說明了,*p++等價於*(p++),而括號裡的p++的計算結果就是

專p,外面的*與這個p不就是*p了嗎屬。這就是字面上的理解了。編譯器的實現可以等價表示為一個逗號表示式(*temp=*p,p=p+1,*temp),即最終結果就是p指向的初始值

14樓:童之新

運算子的優先順序太多了,通常不去經常記憶都會忘記,其實這種問題沒什麼好糾結的,在自己寫**時,**想優先執行就在那裡加括號,這樣是最保險的,根本就不用去考慮這種優先順序問題了

15樓:匿名使用者

*p++本來就等同於*(p++)。

只是因為是後置自增,才先使用p的當前值,然後p自增。版假設p是指向int型別的指權針,則int n=*p++;和int n=*(p++);都相當於是這樣執行的:

int n=*p;

p++;

c語言中運算子++和——問題

16樓:總該有辦法吧

可以這樣理解,c=++a*++a*++a;的運算步驟如下:

1、++a先運算,a=3

2、第二個++a進行運算,a=4,注意這個時候a已經等於4了,也就是第一步運算出來的a=3被覆蓋了

3、運算++a*++a就是4*4=16

4、運算最後一個++a,a=5,為什麼這裡不覆蓋前面的運算呢?因為前面運算的結果不存在a中,而是在臨時的記憶體中

5、最後運算16*5=80

17樓:

++的優先順序比乘高,應該先算++,三次++後a=5,c應該等與125

c語言中的問題?

18樓:匿名使用者

用大括號把exit括進去不就行了嗎

if(x<0&&x>100)

19樓:雲南新華電腦學校

你的void main

後面少()了

正確的void main()

//另外void main()是非標準的寫法,標準的應該是int main()

20樓:雲南新華電腦學校

變數名字自己取的

變數型別有

變數 指標變數 常變數 等

c語言中a++和++a的問題

21樓:靖健幸巍

++在前先加1再進行運算,++在前的運算級別比=優先順序高;

++在後先賦值再預算,++在後的優先順序比=號優先順序低。

第一次輸出結果為:a=5,b=(a+1)*((a+1)+1)=20;

第二次輸出結果為:b=(a+1)*(a+1)=16,a=a+1=5;

22樓:紀融雪貴鑠

inta=0

;a++

,這個時候先賦值然後才加,所有a=0;

++a,先加然後才賦值,所以:a=1;

就像英語的就近原則一樣,誰在前就優先考慮。

23樓:韋邈眭問寒

首先只要知道

x++的值是

x,這個x沒有加1

就是說x=0

x++=0

但是x=1

所以結果很簡單

就是s+=x++=0

s=s+0=0

結果為0

24樓:愛氣歐陽思天

前加加,先用後加;後加加,先加後用。

a=10;

b=a++;

c=++a;

*************************====上述表示式等價於:

a=10;

b=a;

//後加加先用的過程。

a=a+1;

//後加加後加的過程。

a=a+1;

//前加加先加的過程

c=a;//前加加後用的過程

*************************===所以結果是:

a=12

b=10

c=12

25樓:緱剛偶懷蕾

s=0;x=1;s+==x++

就是s+=x運算完了++再進行

26樓:春亙傅雨筠

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

27樓:屠暉終蕭曼

在s+=

x++中先進行s=s

+x,在進行x=x+1.

28樓:厙顏牛傲冬

不是的,你試試改下存放地方。再者就是軟體程式有錯誤,退出再進過

一個關於c語言中++a的問題

29樓:砍侃看

(++a)+(++a)+(++a);

這種表示式的寫法是抄很不好的,因為bai其結果是未定義的,不同du的編譯zhi器得到的結果可能不一樣。所dao以不建議這樣寫,而且對其討論沒有意義,因為你也不知道會得到什麼答案。答案有可能是22,也有可能是24。

因為都沒有錯。

為什麼是22?

因為你的編譯器是這樣處理的,

首先,對a自增,a就是6

再對a自增,這時a就是7

然後相加,注意相加的不是6和7,而是7和7,因為a就是記憶體的一塊,不可能既是6又是7,這時結果是14

再對a自增,a就是8了,然後14+8=22。

在csdn上有個帖子是討論這個問題的,你可以找找。討論的結果就是,這種表示式沒有任何意義。

30樓:兄弟連教育北京總校

首先++a是在用a前就被加了,a++則是在整個語句結束之後之後加的

int a=2

「printf("%d,%d\n",a,++a);」為什麼是專3,3而不是2,3呢 printf是從後往前看引數的,++a,a=3,再屬執行輸出。

「printf("%d,%d\n",++a,a);」為什麼是3,2而不是3,3呢 同理,先看到a,則a=2,然後看到++a,a=3,輸入。

「printf("%d,%d\n",a,a++);」為什麼是2,2,而不是2,3 先看到a++,但++要再整個語句結束之後++,所以a 都輸出2

「printf("%d,%d\n",a++,a);」為社麼是2,2,而不是3,3 先看到a,再看到a++,但是要在語句結束之後加

c語言中賦值運算子++的問題

31樓:

你的編譯器可能比較山寨。按c規則,這題肯定是1,你的分析是完全正確的。為了驗證我專門執行了一下,看——

32樓:麼誒節奏

a = a++ 等同於:

tem = a;

a = a+1;

a = tem ;

手機打字不容易,望採納,別被誤導謝謝。。。

c語言輸出中++的問題

33樓:匿名使用者

先運算y--,執行語句後y才自減1,因此輸出時y的值仍為10運算++i,010是八進位制數,對應十進位制數8,8+1=9輸出x、y的值,輸出9,10選a

34樓:匿名使用者

這道題的執行過程:

i=i+1;

printf("%d,%d\n",i,j);

j=j-1;

當++在i前時(++i),先執行+1,在執行i所在的語句;

當--在j後時(j--),先執行當前j所在的語句,再執行-1.

c語言中的define的問題,c語言中的一個 define的問題

很正常的,簡單的說,是為了之後 中使用 ifdef aodv local repair 或者 ifndef aodv local repair等等。badganker兄說的對的,看過mfc的程式你就發現標頭檔案一開頭一大串這個。除此還有其他作用,你做過正規大點的專案開發就知道了 不但檔案裡 defi...

C語言中函式呼叫問題,C語言中函式的呼叫

首先我們來說一下,你這個程式是有很大的問題的。函式有且只有唯一一個返回值,當程式執行到return的時候,這個函式就結束並返回了。所以,你這裡寫2個return來返回最大值和最小值是不可能的。再者,如果你想使用返回值作為最大值,最小值的傳遞,那麼在main函式中,你呼叫star函式的時候需要一個變數...

c語言中關於佔位的問題,C語言關於佔位符 問題

整形變數佔位符就是用 d lf是double的佔位符 float型別變數也可以用佔位符 f,如果用 d,那列印出來的就是整形的 i最好不用 字元 輸入資料 變元型別 d 十進位制整數 int i 整數 int 該整數可以是以0開頭的八進位制數,也可以是以0x 0x開頭的十六進位制數 o 八進位制數 ...