1樓:未王艮
x++是先用x=1參加運算後加1
所以b1=1+1+1
++y是先加1再參加運算
額。。。這麼算好像不等於十
難道是編譯器的問題?
好吧 這東西跟編譯器有關
3, 10
3,12
說明這樣寫很危險
2樓:匿名使用者
這是由於兩個軟體的原因,在vc++ 6.0裡的輸出結果應該是6和10。在vc也就是turbo c裡,把x=1作為所有x的值參與運算,3個x相加結果就是3,最後再實現x自加3次,x的值變為6.
應該避免出現這種歧義性,如果想得到6這個結果,可以改為:a=x++;b=x++;c=x++;b1=a+b+c;
這些在譚浩強的《c程式設計》這本書裡都有解釋,希望我的解釋對你有用。
3樓:匿名使用者
簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。
而 a = ++i,相當於 i=i+1; a = i;
而 a = i++,相當於 a = i; i=i+1;
同理b1=(x++)+(x++)+(x++);b1=3;
而b2=(++y)+(++y)+(++y);等於y1=y+1;y2=y1+1;y3=y2+1;b2=y1+y2+y3;b2=10;
4樓:匿名使用者
x++意思是先用x,然後才變數+1,b1=(x++)+(x++)+(x++);中x根本沒有迴圈,所以沒有2次使用的機會。
++y是先加1再做計算。。
5樓:匿名使用者
是3和12吧
每個編譯器可能不太一樣
x++是後+1的,b1=1+1+1=3
++y是先+1的,b2=4+4+4=12
6樓:踽踽獨行
其他的人都是亂答!++有side effect的結果是未定的,執行的順序可能根據編譯器都不同。你可以找找這方面的東西。
7樓:匿名使用者
編譯環境的緣故,如b1,是先算加法,再將x自加三次,b2,是先自加兩次,算加法,在自加一次,再算加法,:
同:b2=(++y)+(++y);
b2 = b2+(++y);
不同環境是不同的,若是用其他的環境 如win—tc 應該是:b1=3,b2=12吧;
c語言10/3.0*3的結果為什麼是10.0
8樓:
程式中不同型別的資料進行運算,先進行型別轉換使其為同一型別。規律如下:加減乘除運算中有一個數是float或double型,系統將資料全部轉化成double型在進行運算。
9樓:那邪鄴郢
裡面有個 3.0 ,系統自動變為浮點型運算了,計算機是的 1/2 1/4 1/8。。。 來儲存浮點數的,到一定的精度就會算成10.0
c語言中(double)(10%3)的結果是什麼?
10樓:匿名使用者
1、結果為:1.0000000000000000,16位有效數字2、測試環境:
vc++6.0,32位 xp sp33、printf輸出的結果並不代表double的精確度,不同的編譯器定義的結果也不相同,vc++6.0的輸出結果為1.
000000。
4、測試過程:
11樓:
# include
main()
在32bitxp中編譯執行,結果是3.000000
12樓:bright煒
型別強制轉化,結果是雙精度型別,1.000000
c語言:一個簡單的先輸入數值然後輸出數值,為什麼結果不一樣 20
13樓:
輸入的資料型別和你想輸出的型別不一樣,a定義的是double,但是輸入的時候是int(%d)你換成%f試一下
求解釋一簡單c語言例子,求解釋一簡單C語言例子
公子風起 a 是先使用a的值,再自加1 b,是先自加1以後再使用b的值 a d,它是先使用a的值,a 6,並顯示了以後再自加,令a 7 b d,他是先讓b自加,此時b b 1 8,並顯示 這裡的a,b都要自加1,所以最後a 7,b 8 但在螢幕上a顯示的是先前的值,b顯示的是自加後的值,但在程式執行...
c語言為什麼會出現亂碼,為什麼C語言輸出檔案內容亂碼
應該是二次封裝弄的,防止盜用 這個行業一句 一個級別知道一個級別的事 躲藏了很多不為人知的祕密 你們都知道,我們來到地吃苦的目的就是為了能有今天,就是來掙錢的,所以我就要告訴你們,我們上面 的錢是怎麼分的,怎麼拿的,這也是你們非常關心的一個問題.為什麼會有這麼多的人想加入這個行業 1 每個平凡的人都...
c語言為什麼輸出這個,c語言輸出值為1 R怎麼回事
您好,這個問題是這樣的。請您注意看 byte 是8位,所以可以表示 2 的8次方 256 個資料。取值範圍是 128 到 127 int 則不確定了。在 16 位的系統或編譯器上,可以表示 2 的 16 次方個資料。取值範圍大概是這個數除以 2 從負數到正數。在 32 位的系統或編譯器上,可以表示 ...