1樓:匿名使用者
linu上的c語言優先順序和一般的c語言優先順序是一樣的。
一般是 算術 位 (《關係 位 邏輯 。這麼乙個優先順序順序 。
c語言中的i++、++i的優先順序
2樓:網友
++運算子優先順序高於乘法運算,因此,先執行++i(和你加不加括號沒有關係,即等價於i*i*++i),i變成2,再執行乘法運算2*2*2=8,結果是8,而不是2
執行驗證:分析無誤。
如果是i++,而不是++i,則計算結果是1,同樣也不是2
3樓:黎明之鳥
因為++i是先+再使用,所以a=1*1*2
如果是a=i*i*(i++)輸出將會是1
4樓:匿名使用者
i++表示i參加完所在算式後再自增,++i表示i自增後再參加所在算式運算,如:
i=1;a=i++;//a=1.
a=++i; //a=2.
5樓:葉褸
前幾天開始學程式設計,也遇到了這個問題,經過很多次實踐後發現了一些規律。
對於i++,很簡單,整個式子先用i初值計算,然後根據i++的個數(嚴格說是執行次數)來更新i值。
對於++i就比較麻煩了。我要說的這句話很重要:++i雖然有著比算術運算子更高的優先順序,但這一優勢未必能在一開始就展現出來,因為計算機是從左至右「逐步運算」的。
例如:int i=2,x;
x= (+i) +i) +i);
printf("%d",x);
假設我們一開始就執行所有的++i,答案應當是5+5+5=15,然而實際跑出來的結果卻是13。
實際上是因為計算機在執行過程中是先從左邊提取到了(++i)+(i ),在這個過程中優先執行兩個++i,並執行加法 4+4 得到結果 8,再用8+(+i),即8+5=13.
在這個過程中,第三個++i雖然優先順序高,但在執行的最初未作用,這就是之前說的並未體現這一優勢。
乘法同理。——到這裡應該解釋清楚了———
其實如果我們嘗試加乙個++i
x=(++i)+(i )+i)+(i);
得到的結果是x==4+4+5+6,往後延伸的話應該是+7+8……
所以我們也可以說,並不是後邊的++i作用晚了,而是他們只在輪到他們時才會執行。
而最初的(++i)+(i)純屬意外……他倆只是被一起提出來了。。
如果改寫為x=1+(+i)+(i)+(i)
結果就是1+3+4+5=13,可見就不存在這一問題,他們全都變成逐一發揮作用的了。
神奇吧,在 x= (+i) +i) +i)之前加乙個1居然不影響結果,實際都是有理可循的)
from bit
c語言優先順序的問題
6樓:萢萢
這裡需要注意的是,||是短路運算子,當它前面為真時,它後面的部分就不運算了,相當於沒有。
你的題目中的式子,計算了第乙個括號後,第二個括號就不計算了,因為m+=1,此時已經為真了,所以第二個括號就不計算了。
linux下怎麼用c語言開發介面程式
7樓:網友
選擇1:去qt的官方**,裡面提供免費**,主要**:如果你只用c的話,**qt圖形開發c的程式設計庫,和開發文件(相當於windows的msdn),如果你用c++的話,就**qt圖形開發伍褲明c++的程式設計庫,和開發文件.
選擇2:去gtk的官方**,面裡面提供免費**,主要**:如果你只用c的話,**gtk圖形開發c的程式設計庫,和開發文件(相當於windows的msdn),如果你用c++的話,就**gtk圖形開發c++的程式設計庫,和開發文件.
如果你只用c的話,**mysql資料庫開發c的程式設計庫,和開發文件(相當於windows的msdn),如果你用c++腔告的話,就**mysql資料庫開發c++純漏的程式設計庫,和開發文件。
C語言輸出500以內所有勾股數用C語言程式表達
僅僅是對一樓的優抄化的,還有其他的方bai法,du但是複雜方法對於500以內zhi就顯得太不值得了,還是dao窮舉法簡單些 include int main return 0 暴力一下就行版了 include int main return 0 c語言 求相加之和小於500的勾股數。即x y z 5...
在c語言陣列中怎麼用,C語言陣列怎麼輸出全部?
真是沒轍.實在就多分配點空間.連結串列是動態的,如果用c 把動態分配放到類裡面,就給你一個介面,你是不是也認為那是動態的呢?c與vb不能比.vb有幾個是弄記憶體的?基本上是對的,scanf 裡的引數就是變數的地址陣列名你可以理解為這個陣列的起始地址 第一個元素的地址 比如你這裡的a,它就相當於是 a...
c語言怎麼用移位來表示除以,c語言怎麼用移位來表示除以
對x左移右移可以得 到 x 8,x 4,x 2,x,2x,4x,8x.這些是我們有的,那麼要求x 9,實際上很容易想到把1 9用2的冪次的和表達出來內!1 9在二進位制裡容是0.000111000111000111.好像是,我大概沒算錯吧 那麼1 9 1 16 1 32 1 64 1 1024 1 ...