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...