1樓:匿名使用者
三目運算子應該從右邊算到左邊 他的演算法完全錯了我給你說說吧 例 對於表示式 --a ==b++ a++ b++這裡涉及了c中的優先順序、結合性、求值順序。
結合性只有在相同優先順序的運算子間才起作用,比如a+b*c,+與*優先順序不同,這裡根本不用去管結合性。而a+b+c則需要進行結合性考慮了,如果+為左結合性,那麼應該理解為:(a+b)+c,如果+為右結合性,那麼應該理解為a+(b+c),當然了,我們已經知道+為左結合性了。
對於?:,在c中與它優先順序相同的只有它自己,因此只有連續的?:才會體現出它的右結合性,即a?
b:c?d:
e中,根據右結合性可知應理解為a?b:(c?
d:e)。顯然,上述問題中是體現不出這種結合性來的。
再者,還有乙個求值順序的問題,a?b:c中,c語言規定先對a求值,非零則對b求值並作為該表示式的值,為零則對c求值並作為表示式的值,並且b和c中有且僅有乙個會被求值。
對於題目中的就應該是:先進行(--a ==b++)的求值,根據是否為零,會對(a++)或(b++)進行求值。說白了,也就是只有兩種可能性:
可能性1:先算(--a ==b++)再算(a++)可能性2:先算(--a ==b++)再算(b++)至於(--a ==b++)中到底是先算--a 還是b++則僅從c語言這個角度是無法判別的,這是個實現問題,如果要想寫出健壯的可移植的**就應該避免這種表述。
總結一下,就是先看優先順序,次看結合性,有的求值有序,有的則無序。
2樓:小小_天晴
我給你舉個例子吧,太抽象或許不好理解。
比如說:若w=1,x=2,y=3,z=4;則條件表示式w>x?w:yx不成立 則看y希望能夠幫助到你,o(∩_o謝謝~
c語言+=是什麼運算子?
3樓:匿名使用者
c語言+=是算術運算子。算術運算子即算術運算符號。加法運算子 + 雙目運算子,即應有兩個量參與加法運算。
如a+b,4+8等。具有右結合性。減法運算子 - 雙目運算子。
但「-」也可作負值運算子,此時為單目運算,如-x,-5等具有左結合性。
算術運算子是完成基本的算術運算符號,就是用來處理四則運算的符號。
a1單元格輸入乙個數字,例如:150,b1輸入公式:=a1/100,回車後b1顯示結果為1.
5,這個公式中用到了單元格引用(a1)和運算子除號(/)意思是對a1單元格的資料除以100,在c1單元格輸入=a1%,回車後你會發現結果和b1的公式結果一樣,這裡就是利用了百分號(%)直接參與運算了。
c語言中/ %是怎麼運算的
4樓:紫月開花
算數運算是指能夠完成算術運算功能的運算子 如+-*關係運算子是比較兩個值的大小關係 c語言的結果包括中 就是0和1 也就是假和真 運算子有如: >邏輯運算子執行結果與關係表示式執行結果相同 成立1 不成立0 且(&&或(||非(!
三者優先順序為 算術 關係 邏輯 (由高到低)
5樓:三城補橋
(結構體、類、共同體等)取成員運算子,例如,p->
相當於:*p).
p一定是乙個指標型別。
舉個例子說吧:
struct student
你定義個資料:
struct student *p;
那麼,你就可以這個取它的成員了:
p).name (*p).age這個等於如下的寫法:
p->name p->age
應該清楚了吧?看答案怎麼樣?
6樓:金色潛鳥
/ 是2目運算子,除法運算,整數除以整數則得整數,d = 9/5;
x = 9/5;
printf("d=%lf x=%d",d,x); 得 d= x=1
d = 9./5;
x = 9./5;
printf("d=%lf x=%d",d,x); 得 d= x=1
是2目運算子,整數除法,取餘數運算。
9 % 5 得 餘數 4
c語言中,『/』,『%』是怎麼運算的?
7樓:起名字難吶啊
%是除法取餘運算。
用於整數與整數運算。否則,不同的編譯器會得不同結果。
'為取餘運算子,用於把它前面的整數值或表示式除以其後面的整數值或表示式,結果為不能被後。
面的整數或表示式整除的最小整數,它後面的數值應該為大於1的正整數。如表中所示的"13%7",就表示13 除以7餘6。
作為雙目運算子,左右運算元可以是數值,也可以是表示式。
但'%'運算子的左右運算元必須是整數。
負數取餘運算ms vc++ 編譯器:
c語言中,幫解釋下%運算的值
8樓:陸美富
0%5=? 的商是0,那麼餘數就是0-0*5=010%2=?的商是5,那麼餘數就是10-2*5=03%5=?
的商是0,那麼餘數就是3-0*5=34%7=?的商是0,那麼餘數就是4-0*7=4這樣解釋,你理解了嗎??
9樓:gis廣益
5%4=1
是取餘 運算子。
如果 a / b = m
a%b = a - m *b
10樓:網友
求模啊!就是。
例如:11%4=2餘3
所以答案11%4就是3
所以0%5=5
c語言演算法:求1×3×5×……×1000
11樓:♂凡鳥
應該是寫錯了。
你可以參照文庫裡的這個ppt:
這個ppt裡面有這一段(第22頁),寫的是i≤1000
不過這裡還是有問題,其實這個不應該是1000,而應該是1001
因為i+2p永遠不會等於1000,當i=999時候下乙個應該是1001,這樣永遠都乘不上1000。
而且這個序列從前面來看就是奇數的數列,也不應該直接把1000放在省略號的後面。
所以這兩個版本都是有錯誤的,正確的應該是:
求1×3×5×……1001:
s1:1ps2:3i
s3:p×ip
s4:i+2p
s5:若i≤1001,返回s3。否則,結束。
如下ppt的第9頁:
12樓:匿名使用者
沒看明白扣樓主要表達的。麻煩些清楚點。
13樓:匿名使用者
沒看懂你這個到底表達什麼意思。
c語言中這個怎麼算,詳細說一下
14樓:匿名使用者
第二個>應該是?,如果a>b則x=a+c,否則x=b
15樓:網友
第二個>應該是問號吧?!!
16樓:聽不清啊
樓主寫的有點錯了,應該是:
x=a>b?a+c:b;
意思是:若a>b,則x=a+c; 否則,x=b;
17樓:匿名使用者
如果a等於b則x=a+c,否則x=b,三目運算子。
c語言中計算,c語言中計算100 1000之間有多少個數,其各位數字之和是5的程式
示例 include intmain if s 5 continue else count 擴充套件資料 include int addnumbers int n int main int num printf 輸入乙個整數 scanf d num printf sum d addnumbers n...
C語言指標計算,c語言中,指標的運算是怎麼算的,如pa
設pa是指向陣列a的指標變數,則pa n,pa n,pa pa,pa pa 運算都是合法的。指標變數加或減乙個整數n的含義是把指標指向的當前位置 指向某陣列元素 向前或向後移動n個陣列元素位置 指標變數 表示指標指向指向的當前位置 指向某陣列元素 向前或向後移動1個陣列元素位置。成立,但要同一型別。...
C語言中怎麼計算x,y的值,c語言中(x,y)中怎麼計算
int x,y 定義的時候如果不初始化,不同的環境會初始化不同的值,有的是0,有的不是,你的這個程式,x的結果是不定的,同時,有些環境下除錯也會報錯! 此處無名勝有名 c語言的賦值語句是從右到左執行的,比如 x y 1 意思就是 把y 加1後賦值給x但c語言的語序是從上到下執行的 本題中,當執行in...