1樓:201求一份安逸
a=(b=4)=3;這是賦值運算,bai從右至du左結合,但是zhi
這裡有括號b=4會被先執行,執dao行完後結內果為false(零)這容裡沒有問題,後面a的賦值就有問題了,到底是把0賦給a,還是將3賦給a呢?問題在這,你懂了嗎?
2樓:匿名使用者
a=(b=4)=3
先運算 b=4 結果為false 即 0
a=0=3
不是合法語句
若有定義語句:int a=3,b=2,c=1;,以下選項中錯誤的賦值表示式是
3樓:手機使用者
a錯了,不能將3賦值給表示式,b=4已經是個表示式了,既然是表示式就只有真假(即0和1),基礎知識要看仔細點…
4樓:匿名使用者
a錯了,原式=>a=4=3,明顯錯誤
5樓:匿名使用者
a肯定是錯的 ,變數a是整型,(b=4)=3這個表示式是bool,所以出錯。
6樓:死後是好人
a放到程式裡一試就式出來了,只有a報錯,其他的都能通過
c語言 若有定義語句 int a=3,b=2,c=1; 一下選項中錯誤的賦值表示式是 a a=
7樓:匿名使用者
c語言中,賦值號左邊只能是變數,而不能是表示式,答案a中,最右邊的賦值號它左邊是一個表示式(因為b=4使用了括號)而不是變數,所以是錯的
8樓:匿名使用者
a 已經驗證過了,需要左賦值!
9樓:一劍傾心頂你
選a這個題要考慮運算子的優先順序,
+-*/優先於=
而且=運算子從右往左算
c語言環境中,設a=1,b=2,c=3,d=4,則表示式:a>b?a:c>d?a:d的結果為( )
10樓:lovefree隨風
表示式:a>b?a:c>d?a:d的結果為4。
解析:1、由於c語言的相同優先順序運算子運算規則為從左至右依次運算,而條件運算子具有右結合性,所以表示式:a>b?
a:c>d?a:
d優先運算c>d?a:d,得出的結果為4;
2、再運輸a>b?a:4,得出的結果為4。
所以最終得出的結果為4。
擴充套件資料表示式為:表示式1?表示式2:表示式3
先求解表示式1,
若其值為真(非0)則將表示式2的值作為整個表示式的取值,否則(表示式1的值為0)將表示式3的值作為整個表示式的取值。
例如:1、max=(a>b)?a:b,就是將a和b二者中較大的一個賦給max。
2、min=(a條件運算子具有右結合性
當一個表示式中出現多個條件運算子時,應該將位於最右邊的問號與離它最近的冒號配對,並按這一原則正確區分各條件運算子的運算物件。例如:
11樓:匿名使用者
結果是4,一會寫出過程
「?:" 這是一個三目運算子,以 「c>d?a:
d」這個**為例,程式會首先判斷「c>d」是否為真,若為真則執行冒號前的語句,即其結果為」a「的值;若為假,則執行冒號後的語句,即其值為"d"的值。
一般遇到這樣的題要拆分著做,首先判斷最左邊的「a>b」,這個結果為假,根據條件判斷運算子的性質,所以接下來執行第一個冒號後的語句「c>d?a:d」,接著判斷「c>d」,結果為假,所以最終取值為第二個冒號後的值,即為d的值,也就是4。
12樓:匿名使用者
答案為4,「a?b:c」是從右向左執行的,也就是說a為真的話,這個式子就可以看做b,否則可以看做c;c大於d麼,不是,則變成了a>b?
a:d,a大於b麼,不是,則為d,d=4.
13樓:匿名使用者
答案是4.三目運算子就可求得
int a=3,b=2,c=1; 錯誤的賦值表示式是 a.a=(b=4)=3 b.a=b=c+1
14樓:聽不清啊
因為bcd都是語法上正確的賦值表示式。
而a是語法錯誤的,編譯不能通過的。
c語言的陣列問題,若有定義:int a[2][3];以下選項中對a陣列元素正確引用的是 a.a[2][!1] b.a[2][3]
15樓:匿名使用者
選d。一個二維陣列可以被認為是一個帶有 x 行和 y 列的**。下面是一個二維陣列,包含 2 行和 3列:
因此,陣列中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標識的,其中 a 是陣列名稱,i 和 j 是唯一標識 a 中每個元素的下標。i最大值為1,j最大值為2,超出此範圍則表示錯誤。
16樓:孤獨的蠍子
d 因為1>2為假,所以表示式為0 ; 其次!1也就是非真,即為假,所以a[1>2][!1]等價於a[0][0]
17樓:藍人
d,陣列的有效範圍是a[0][0] - a[1][2]
a,b,c都超過範圍了。
18樓:匿名使用者
定義的陣列引用時那個數下標減1
c語言新手求教幾個問題: 1、a=a+7=c+b為什麼語法錯誤?
19樓:龔煒林
你好!1、等號是賦值運算,這就意味著等號左邊必須是被賦值的變數,顯然a+7是表示式,而不是變數。
2、整形運算是隻取整數部分的,你定義的c1,c2,c3均是整數,所以;c3=1.0/c2*c1;進行的是整形運算,那麼只取整數部分就是0.
3、注意:在浮點型與整形等混合運算時,系統會將所有型別的資料轉化成double型的來運算,然後把結果再根據需要賦給響應變數。
對於你的表示式,c是float的,所以最後結果是要被轉化成float賦值給c。
4、逗號運算子,又稱順序求值運算子,但是要區分這個順序,這裡的順序指的是表示式,逗號運算子使用形式是:表示式1,表示式2,......
這就是說逗號隔開的是表示式,那麼對於i=(a=2*3,a*5),a+6;就可以理解了:i=(a=2*3,a*5)是一個表示式,a+6是另外一個表示式。
20樓:匿名使用者
一、賦值號左邊必然是變數, a+7=c+b是錯誤的。等號是賦值運算,這就意味著等號左邊必須是被賦值的變數,顯然a+7是表示式,而不是變數。
二、賦值語句是由賦值表示式再加上分號構成的表示式語句。
其一般形式為: 變數=表示式;
在賦值語句的使用中需要注意以下幾點:
1. 由於在賦值符「=」右邊的表示式也可以又是一個賦值表示式, 因此,下述形式 變數=(變數=表示式); 是成立的,從而形成巢狀的情形。 其之後的一般形式為:變數=變數=…=表示式;
例如: a=b=c=d=e=5; 按照賦值運算子的右接合性,因此實際上等效於: e=5; d=e; c=d; b=c; a=b;
2. 注意在變數說明中給變數賦初值和賦值語句的區別。 給變數賦初值是變數說明的一部分,賦初值後的變數與其後的其它同類變數之間仍必須用逗號間隔,而賦值語句則必須用分號結尾。
例如: int a=5,b,c;
3. 在變數說明中,不允許連續給多個變數賦初值。 如下述說明是錯誤的: int a=b=c=5 必須寫為 int a=5,b=5,c=5; 而賦值語句允許連續賦值。
4. 注意賦值表示式和賦值語句的區別。 賦值表示式是一種表示式,它可以出現在任何允許表示式出現的地方,而賦值語句則不能。
下述語句是合法的: if((x=y+5)>0) z=x; 語句的功能是,若表示式x=y+5大於0則z=x。 下述語句是非法的:
if((x=y+5;)>0) z=x; 因為x=y+5;是語句,不能出現在表示式中。
21樓:校花丶窼頿齔
這個式子會從右到左依次賦值
c語言中int a 3,b 2,c 1執行if a》b》c
執行的時候bai,應該寫a b b c 你du這樣寫的結果就是 先執zhi行a b,結果為真,在c語言裡dao真用1表示,就 版是算式權a b結果為1,接下來,1 c,結果為假,所以a c。比如你寫死迴圈的時候寫while 2 1 的時候是死迴圈,寫while 1 的時候也是死迴圈,明白了吧。if ...
C語言w 3,x 2,y 3,z 3,a 4,b 2則執行語句 a wxb yz 後,a,b的值為
樓主你好,這裡我先跟你說一下這個或是什麼意思,或的意思就是,兩個條件只要滿足版一個就為真。這個權跟數學中的或是一樣的意思。a b,那麼a為真的話,不管b是否為真,這個表示式就為真,現在跟你說一下這個表示式 先看a w x,相當於a w x w x顯然為真,所以這個表達就為1,所以a 1,所以a w ...
C語言inta3,b4intcca,ab求問c的值
逗號運復算符,從第一制個表達 式開始運算,直到bai 最後一個表示式,du並以最後一個表zhi達式的結果作為整個dao運算的結果。a,a b 先執行a,得3,再執行a b,得3 4 7,以7作為整個運算的結果,並賦值給變數c c的值是7 輸出為the number is 7 c語言中的逗號表示式只有...