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 八進位制數 ...