C語言表示式計算步驟,C語言表示式計算步驟

2022-04-25 04:02:02 字數 5800 閱讀 5920

1樓:匿名使用者

強制轉換的優先順序高於運算子

剩下的就是括號和四則運算次序了

a+(int)(b/3*(int) (a+c)/2)%41、(int) (a+c) 強制轉換

2、b/3*(int) (a+c)/2 自左向右依次進行3、(int)(b/3*(int) (a+c)/2 強制轉換4、(int)(b/3*(int) (a+c)/2)%4 資料取餘5、a+(int)(b/3*(int) (a+c)/2)%4

2樓:匿名使用者

先(a+c),然後強制型別轉換(int)(a+c);然後順序b/3* (int) (a+c)/2;再強制型別把前那個數轉為int型;之後求餘運算%4;最後執行加法運算。求採納

3樓:匿名使用者

1、b/3

2、(int)(a+2)

3、 步驟1的結果 * 步驟2的結果

4、 步驟3的結果 / 2

5、 (int)(步驟4的結果)

6、 a + 步驟5的結果

7、 步驟6的結果 % 4

4樓:豆兒媽育兒

第一步:運算(a+c)

第二步:運算(int)d

第三步:從左到右運算(b/3*d/2)

第四步:運算(int)(第三步的結果)

第五步:運算(第四步的結果)%4

最後,a + 第五步的結果

5樓:匿名使用者

在這個表示式中有括號、強制型別轉換、算術運算運算子。

括號優先順序最大,且由左到右順序,則先算(int)再算(b/3*(int)(a+c)/2),在運算過程中則先算(int)後算(a+c).

這樣括號就算完了,然後算強制型別轉換,把b/3*(int)(a+c)/2),轉換成int型別,在其中也把(a+c)轉換成int型別。

最後算算術運算子,先乘除求餘,從左到右。後加減也是從左到右。即可得到結果。

6樓:伏無

先執行(a+c),

然後是/2,

接下來是b/3和%4,

然後取整

接著算乘法,

最後相加。

7樓:有郊範圍

a+(int)(b/3*(int) (a+c)/2)%41.(a+c)

2.(int) (a+c)

3.b/3*(int) (a+c)/2

4.(int)(b/3*(int) (a+c)/2)5.(int)(b/3*(int) (a+c)/2)%46.a+(int)(b/3*(int) (a+c)/2)%4

[c語言][表示式計算][逗號表示式]表示式計算順序的疑問

8樓:龍不悔

首先我們看一下你的表示式b=a+(a=0,1);等式右邊算完值後賦值給左邊,而右邊的表示式版括號優先順序最高,

權所以先算括號裡面的逗號表示式,看看下面的解釋:

「c語言提供一種特殊的運算子,逗號運算子,優先級別最低,它將兩式聯接起來,如:(3+5,6+8)稱為逗號表示式,其求解過程先表示式1,後表示式2,整個表示式值是表示式2的值,如:(3+5,6+8)的值是14。

(a=3*5,a*4)的值是60。---來自百科」

那麼(a=0,1);的執行結果是a=0,而整個括號的結果是1,所以b=0+1=1.

對於第二個式子:b = (a=1,printf("1:%d\n",a),a)+(a=0,printf("2:%d\n",a),a+1)

右邊括號優先順序一樣,所以從左到右運算,第乙個逗號表示式(a=1,printf("1:%d\n",a),a)輸出為1:1;然後值為a,此時a=1,同理第二個式子輸出為2:

0,值為a+1,此時a=0;。那麼b = a+ a+1=0+0+1=1;就是這樣的。

9樓:匿名使用者

第乙個:bai執行b = a + (a=0,1); a先為0,也du就是b = 0 + 1

第二個:zhib = (a=1,printf("1:%d\n",a),a)+(a=0,printf("2:%d\n",a),a+1)

可以化簡為:b = a + (a = 0; a + 1 )還是:b = 0 + (0 + 1 )

我只dao能給乙個這樣版的解釋,權等高手

10樓:路易五十三

以彙編檢視檢視實bai際的操作:

1、duptr [ebp-4]置為

zhi0,ebp-4得到的dao是變數a的記憶體位址版,也就是a賦值為0了。權

2、暫存器eax置為ptr [ebp-4],也就是a的值放入暫存器。

3、add  eax,1,就是eax寄存的值+1。

也就是說int b = a + (a=0,1);這條語句被理解成a=0;int b=a+1;。也不知道不同編譯環境下是否還有所不同?我一開始跟樓主想得也一樣,b的值應該是2。

具體的原因我也很想知道,期待高手詳解。不過b = a + (a=0,1);這種**只能用來研究,不提倡實際編寫,程式設計不是做密碼,容易歧義的東西會耽誤事的。

11樓:匿名使用者

1、對bai於

a = 1

b = a + (a=0,1);

在做+之前,其兩邊的操作du數一定是「值

zhi」,而不能dao是表達版式,所以表示式必須先進行求權值,至於先左後右還是先右後左求值,在ansi和iso標準中並沒有明確規定,所以平台的實現者可以依據具體情況自行決定,但有括號必須先計算括號中的內容,所以,a被賦予0,那麼b為1就是合情合理的了。

c語言中表示式的值怎麼算

12樓:墨汁諾

此式即等同於 (4!=3)&&(2)&&(4+1<5)1代表真,0代表非,則原式即 1&&1&&0 所以值為0。

例如:-12/5 = -2 只為這個是整數運算,結果只取整數部分。

62 1*(6+7) + 7 *(6+1) = 13 +49 623.2 *(6+7+1) = 44.8

13樓:

可以。逗號運算子,從左至右計算,取最後乙個表示式的值作為整個語句的值。

先算a=3,就是把a賦值成3,然後算b=4,對b賦值成4,最後計算c=a+b,實際就是c=3+4,c的值是7。最終整條語句的最後值就是c的值7.

14樓:匿名使用者

這是逗號表示式,整個表示式取最後乙個子表示式的值,比如d=(a=3,b=4,c=a+b),那麼d = c=a+b=3+4=7

15樓:匿名使用者

以上形式在c中稱為逗號表示式,整體的值為最後乙個表示式的值,具體詳情可參考百科介紹:

16樓:匿名使用者

逗號也是運算子,逗號遠算符的結果,就是最右邊表達示的結果

=也是運算子,這個達示的結果(c=a+b),就是等號左邊變數(c)的值,結果是7

17樓:成靈慧

7表示式從左到右,順序求值

真個表示式的值是最後乙個表示式的左值,

18樓:匿名使用者

可以c=7

(a=3,b=4,c=a+b)=(c=a+b=3+4)=(c=3+4)=(c=7)

19樓:

int a,b,c;

a=3;

b=4;

c=a+b;

printf("%d\n",c);

c語言計算表示式的值

20樓:戈遠源雅嫻

逗號運算子

左至右計算

取表示式值作整

語句值先算a=3,

a賦值3

算b=4,

b賦值4

計算c=a+b

實際c=3+4c值

7終整條語句值c值7.

21樓:匿名使用者

#include

#include

#define maxsize 99

void translate(char str,char exp) /*將算術表示式轉換成字尾表示式*/

op; /*定義乙個含data和top的結構體*/

char ch;

int i = 0,t = 0;

op.top = -1;

ch = str[i]; /*將str的每乙個數轉換成ch*/

i++;

while(ch != '\0') /*ch對應不同的符號的時候對應的轉換情況*/

op.top--;

break;

case '+':

case '-':

op.top++; /*恢復可插入位置*/

op.data[op.top] = ch;

break;

case '*':

case '/':

while(op.top == '/'||op.top == '*') /*優先順序*/

op.top++;

op.data[op.top] = ch;

break;

case ' ': /*忽略空格,排除誤操作*/

break;

default:

while(ch >= '0'&&ch <= '9')

i--;

exp[t] = '#'; /*分隔運算元,為了美觀,也為了以後好分隔運算元,呵呵*/

t++;

}ch = str[i];

i++;

}while(op.top != -1) /*得到剩下的部分*/

exp[t] = '\0'; /*表示式結束*/

}float cal_value(char exp)

st; /*運算元棧*/

float d;

char ch;

int t = 0;

st.top = -1;

ch = exp[t];

t++;

while(ch != '\0')

st.top--;

break;

default:

d=0;

while(ch >= '0'&&ch <= '9') /*從字尾表示式中獲取運算元,#作用在此體現*/

st.top++;

st.data[st.top] = d;

}ch = exp[t];

t++;

}return st.data[st.top];

}int main() /*可以提到前面去*/

22樓:宜凱尉馨

5<<2

41!=0

真(1)

!!3真(1)

107%10

73/2*2

2011>9

011(如果為二進位制數或八進位制則是

假(0),十進位制或十六進製制

則是真(1))

怎樣提高語言表達能力,怎樣提高語言表達能力呢?

充滿著信心。我們提高語言表達能力就需要時刻對自己充滿信心,不斷的利用各種機會來鍛鍊。多去閱讀。1 內向性格的人,有乙個很大的特徵就是不善言談,不懂得怎樣表達自己。但是不善於表回達自己答,不代表自己內心沒有什麼想法。所以,你現在所要做的就是將自己內心的想法如實的表達出來。2 如果你是學生,我想,改變自...

如何訓練語言表達能力,怎樣提高語言表達能力

要想迅速而高效的拓展你的語商,建議你遵循 四要四不要 的策略。1.要實在,不要花言巧語 說話和辦事一樣,都講究實在,不要一味追求使用華麗的詞藻來裝飾,更不要譁眾取寵。2.要通俗,不要故作姿態 說話要避免深奧,盡量使用大眾化的語言,像俗語 歇後語 幽默笑話等,這樣,你辦起事來可能會事半功倍。3.要簡明...

怎麼樣提高語言表達能力,怎樣提高語言表達能力

現代社會對我們的表 bai達能力越來越du重視,那我們該如何提zhi高自己的表達能dao力呢?首先版我們要有語言邏輯,其次 權語言邏輯的結構要清晰,有個很簡單的結構 觀點 論據 論點。最後保持練習,通常在1周到1個月,你的表達能力就會有所提公升!你首先要知道你想說的是什麼,熟練的掌握它,能夠做到毫不...