簡單c語言求解為什麼VC中輸出結果是3和10啊

時間 2021-08-30 11:00:27

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 位的系統或編譯器上,可以表示 ...