C語言運算問題

時間 2022-07-07 05:05:09

1樓:不沉之月

樓下的都說得有道理

我執行的結果兩次都是25

其實樓主這個語句就是一個問題

它違背了程式設計中,條理清晰,語句分明的要領。

但是作為個人想法,我覺得應該是30才對。

過程就像樓下「匿名回答者」說得那樣。

不同的編譯器,會有不同的處理方式

所以這個問題不能深究。

ps:剛剛看到樓下的說「如果你以後寫程式真的用到了繁瑣的k=(j++)*(++j)+(j--)*(--j)之類的語句不得不說你學的很失敗,要知道c的**是寫的越簡單越明細越好,當然瞭如果你是想秀自己的c有多麼的好請無視這小段話。

」這句話我非常反對,我並不覺得樓主出現這樣的問題很失敗,的確**寫的越簡單越明細越好,但是又有哪個一開始就會寫得那麼好呢?程式設計就是在這種探索與思考中提升的,所以希望樓主以後像這樣的語句還是少用的好,但是像樓主這樣善於發現與思考的精神,希望我們大家都應該學習!

2樓:匿名使用者

去這裡看看http://www.baidu.comj++(j--)是先運算再加(減)1

++j(--j)是先(減)加1再運算

執行j++之後j就變為了4,但是是先運算了再加1,所以此時作運算的j的值為3

執行++j之後j就變為了5(4+1=5),此時作運算的j的值為5執行j--之後j就變為了4,但是是先運算了再減1,所以此時運算的j的值還是5

執行--j之後j就變為了3(4-1=3),此時作運算的j的值為3即:k=3*5+5*3=30

3樓:匿名使用者

我覺得最好不要這麼寫!

int j=3;

字尾時i=j++;//i=3,j=4

字首時i=++j;//i=4,j=4

但是如果

i=(j++)+(j++);//我覺得這個就要看編譯器的了,6or7你寫的程式就類似上面的,所以還是儘量避免吧

4樓:匿名使用者

語法上可以這麼用

但實際上卻嚴重不推薦這麼用

因為這個運算會根據不同的編譯器產生不同的結果

5樓:

其實這個問題真的不用考慮,我當時也問了我的老師,老師的回答是這個問題本身就有問題

1:如果你以後寫程式真的用到了繁瑣的k=(j++)*(++j)+(j--)*(--j)之類的語句不得不說你學的很失敗,要知道c的**是寫的越簡單越明細越好,當然瞭如果你是想秀自己的c有多麼的好請無視這小段話。

2:既然樓主提到了這個問題,其實只要把j++和++j弄清楚就完全ok了,j++的意思是先用j,在j自增;++j的意思是先自增j,在用自增後的j的值

ps;同意2樓的,不同的機子有不同的結果,樓主只要掌握 j++和++j就行了

6樓:匿名使用者

你要分辨是j++,還是++j,是先加再進還是先進再加。看下c語言書就知道了。

7樓:匿名使用者

不同的編譯器 會有不同的結果 我這邊兩個編譯器做出來的結果是不同的

我的另一個結果是25,25 在編寫程式時應該儘量避免這樣的寫法

c語言位運算問題,c語言 位運算問題??

你好,請問你怎麼知道是帶入的後面的來進行運算?include include int main 如果您是推斷的話,輸出結果為兩個0xffffffff,說明您給的推斷不正確。 int a 1 這是有符號數,vc 編譯器處理為 long int a unsigned char a 0377 轉為無符號數...

C 位運算速度問題,c語言位運算問題?

位運算速度很快。所以,可以用移1位代替乘2或除2,省時。編譯後的程式都是機內數,機內碼,都是2進位制,不用自己操心。target a 6 a 6 屬於定址計算,按a的地址,加 6 sizeof int 把這個地址裡的數賦到target的地址裡。for r 0 loop 1 r 這裡有分號,也就是迴圈體...

C語言邏輯運算子問題,c語言邏輯運算子 我不明白 和 到底是怎麼運算的

c表示式中的操作符按優先順序順序結合,本表示式中運算子的優先順序順序從高到低為 所以表示式計算分解為 temp1 year 4 temp2 year 100 te year 400 temp4 temp1 0 temp5 temp2 0 temp6 te 0 temp7 temp5 temp6 ex...