c語言關於運算子的問題

2022-04-18 10:04:54 字數 1089 閱讀 5093

1樓:江小右

++在前九先執行j後在加,比方j=1;1+(j++)則先是1+j,當然1+j=2了,然後是執行j++,這時j=2了,如果是1+(j++)+j的話,結果就改是1+1+2=4了,你推敲下是不是這樣

int m,j=5,t;

t=(++j)+(j++)+(++j)+(j++);//6+6+8+8

這裡我用vs2005編譯的是28,9,和你的26,9部一樣,這個可能產生的原因是編譯器,對於不同的編譯器其執行步驟有所差異的

2樓:

++j,先自增再運算

j++,先運算再自增

3樓:匿名使用者

樓上的別一筆帶過,你們仔細算一下結果

比如j=5;t=(j++)+(++j)+(j++);

按你們的應該是17,可是結果是18.

4樓:匿名使用者

第一塊 int m,j=5,t;

t=(++j)+(j++)+(++j)+(j++);

j的初值為5,++j為先自加1後使用,即第一個括號值為6,同時j變為6;第二個括號中先採用j的值參與運算,後自加1,即第二個括號值為6,同時j變為7;第三個括號考慮同1,括號值為自加後的8,同時j變為8;第四個括號考慮同2,括號值為8,同時j自加變為9;所以

t=6+6+8+8=28,j=9;

第二塊j=5;

m=(j++)+(++j)+(j++)+(++j)+(++j)+(j++)+(++j);

j的初值為5;第一個括號值為5,j自加為6;第二個括號先自加,值為7,j為7;第三個括號值為7,後j自加為8,第四個括號值為9,j為9,第五個括號值為10,j為10;第六個括號值為10,後j自加為11;第七個括號值為12,j為12;所以

m=5+7+7+9+10+10+12=60,j=12;

第三塊 j=5;

t=(j++)+(++j)+(j++);

j初值為5,第一個括號值為5,j自加為6;第二個括號值為7(j先自加後參與運算),j為7;第三個括號值為7,j後自加變為8;所以

t=5+7+7+19,j=8;

c語言運算子與表示式問題,C語言運算子與表示式問題

x 是 在本句中先將來x的值 1,然後 使用自 1後的值 y 是先使用原值,然後在以後使用 1的值這樣在printf語句中 x即 4,y 為3但是 x,y 是一個表示式,只能有一個值,這個值是3,因為取的是逗號運算子後的值作為整個表示式的值 逗號運算子的性質如此 而z 2則作為臨時變數值顯然是3 所...

C三目運算子問題關於c三目運算子的問題

三目運算就是下面這算式了 a a a z a 32 a它的意思是 a代表的字元在小寫字母 a 和 z 之間嗎?如果是,運算結果是a 32 如果不是,結果是a 這段程式應該是字母大小寫轉換,但有點問題。如果是想把小寫轉成大寫,後面應該是 a 32 如果是想把大寫轉成小寫,引號裡應該是大寫字母a和z 語...

c語言移位運算子怎麼用,C語言移位運算子怎麼用?

這是c 好吧。算了c和c 的移位運算子都一樣 這個難道不對嗎,左移就是 2啊 不越界的話 原理就是你把1110化成二進位制 000010001010110 然後每個位都向左移一位,最低位補0,次高位捨棄 最高位是符號位,不能動 x 1 相當於乘以2 假如 x 8,對二進位制來說就是00001000,...