A. 一個c語言中關於賦值與關系運算符的問題
樓主問為什麼不是31想必樓主應該知道if表達式中的是一個賦值語句 在 C/C++關系運算非零就是真
在這里有一個先後關系 就是 if括弧中的表達式算完以後才做if判斷 所以 先 B=31 現在B就是31 if判斷法if(B) 相當於 if(31) 非零為真 所以會執行大括弧中的語句為B重新賦值
在C中if括弧中的是表達式那就要求表達式算完才能判斷要不會出現二義性而不是先做if(B) 再B=31
B. C語言中的賦值語句
你都學傻了!!!!!
賦值就是賦值什麼表示成功不成功啊;
你看看這個吧
c=(x=z);
c==(x=z);
第一個是賦值表達式,賦值表達式是不產生邏輯值的,也就是什麼都沒有
後一個才是關系表達式,是產生邏輯值的
自己想也得根據實際啊,要從實際出發,這是歷史得教訓
C. c語言中賦值表達式的值是什麼,就比如關系表達式的值是一個邏輯值
賦值表達式的值類型
也就是賦值的左值類型。
注意是最左
比如
a=b=c=d;
那麼表達式的值,就是a賦值後的值。
D. C語言中關系、算術、賦值和逗號四種運算符的運算優先順序!
逗號<關系<算術<賦值
個人經驗補充一條,單目運算符中,左自增和左自減的運算優先順序最高。
只間隔一個運算數的,或者同時使用一個操作數的,不同運算方向的運算符,不用考慮運算優先順序問題,因為同一個運算方向上才會有計算順序的先後。
e.g.int a=5*3;
//=優先順序更高,但是得等運算方向相反的*號運算結果得出後,才能進行它從右往左運算。
全部運算符的運算優先順序都在這里了
E. c語言的表達式主要類別包括~算數表達式,關系表達式,邏輯表達式和什麼表達式
常量、變數、算術表達式、關系表達式、邏輯表達式、條件表達式、逗 號表達式、賦值表達式、混合表達式、函數調用表達式
F. c語言的表達式是什麼
推薦你一個比較全面的資料。
http://wenku..com/view/f0e1d31fa8114431b90dd8f6.html
在C語言中,有以下幾類表達式:
算術表達式、關系表達式、邏輯表達式、賦值表達式、逗號表達式。
而單目我想應該是指單目運算符。運算所需變數為一個的運算符叫單目運算符
有以下幾類:
邏輯非運算符【!】、
按位取反運算符【~】、
自增自減運算符【++ --】、
負號運算符【-】、
類型轉換運算符【(類型)】、
指針運算符和取地址運算符【*和&】、
長度運算符【sizeof】
G. C語言中賦值語句的語法是怎樣的
賦值的語法規則就是:
數據類型 變數名 = 表達式
表達式可以理解為一個值或一個計算公式就行,表達式加一個英文符號分號就是語句。
例如:
我們今天要用到的,我買了幾斤蘋果。
就可以這樣寫:
方式一:
Int apple_count = 0; //告訴計算機apple_count是用來存買蘋果的斤數的,默認為0;
方式二:
Int apple_count; //告訴計算機apple_count是用來存買蘋果的斤數的,以後再告訴計算機它等於多少,現在不知道;
(7)c語言賦值表達式與關系表達式擴展閱讀
1、C語言中,賦值運算的操作是有方向的,即將右側表達式的值(也稱為右值)賦值左側的變數,只能是標識一個特定存儲單元的變數名。
2、由於變數名只能出現在賦值運算符的左邊,因此它也被稱為左值;由於常量只能出現在賦值運算符的右邊,因此它也被稱為右值。左值可以用作右值,但右值不能用作左值。
H. C語言賦值表達式和關系表達式共都是邏輯表達式的一部分吧
是不是邏輯表達式就看錶達式的最後一步是否做邏輯運算。是一種運算表達式。
條件表達式是從程序結構來說的,滿足某種條件,但其本身可能是算術表達式,可能是關系表達式可能是邏輯表達式。二者不矛盾。
if是條件判斷,後面當然跟條件表達式。
所以if(a==b)可以;if(a||b)可以,if(a=b)、if(a+b)都沒有語法上的錯誤。
I. 在C語言中11種賦值運算符的具體含義,用法
1.六個變數=表達式的賦值:
=是賦值運算符,/=是除後賦值,*=是乘後賦值,
%=是取模後賦值,+=是加後賦值,-= 是減後賦值,
2.<<=是左移後賦值,變數<<=表達式 左移就是將左邊的數的二進制各位全部左移若干位,右邊的數指定移動位數,高位丟棄,低位補0, 移幾位就相當於乘以2的幾次方。
3.>>=是右移後,變數>>=表達式,右移運算符是用來將一個數的各二進制位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被舍棄,對於無符號數,高位補0。
對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」);
對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。
如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統,系統移入0或系統移入1。
移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
4.&= 按位與後,變數&=表達式,按位與是指:參加運算的兩個數據,按二進制位進行「與」運算。
如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。
5.^= 按位異或後賦值,變數^=表達式,參與運算的兩個量按照對應的位進行異或運算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
一個數與0異或仍保持不變,如a^0=a
一個數與自己異或結果為0,如a^a=0
11.|=是按位或後賦值,變數|=表達式,參與運算的兩個量按照對應位進行或運算,且0|0→0, 0|1→1, 1|0→1, 1|1→1。
(9)c語言賦值表達式與關系表達式擴展閱讀:
1.賦值表達式的功能是計算表達式的值再賦予左邊的變數。
賦值運算符具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。
2.在其它高級語言中賦值構成了一個語句,稱為賦值語句;
而在C語言中,
把「=」定義為運算符,從而組成賦值表達式。
3.凡是表達式可以出現的地方均可出現賦值表達式。
例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。
4.在C語言中也可以組成賦值語句。
按照C語言規定,任何錶達式在其未尾加上分號就構成為語句。
J. C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。
C語言運算符及其優先順序匯總表口訣
圓下箭頭一頓號
非凡增減富強針地長
三乘除,四加減,五移位
千萬別把魚忘記,它在盛飯的廚子里
小燈大燈燈燈不等
爸喂魚,舅疑惑,裸雞也疑惑
十三姨,十四父,十五逗,兜到低
「圓下箭頭一頓號」指的是第15級的運算符。
正在裝載數據……
其中圓指的是運算符(),下指的是下標運算符[],箭頭指的是指向結構體成員運算符->,頓號指的是結構體成員運算符、
「非凡增減富強針地長」指的是第14級的運算符。其中非指的是邏輯運算符!,凡指的是按位取反運算符~,增減指的是自增和自減運算符++和--,富指的是負號運算符-,強指的是類型轉換運算符(類型),針指的是指針運算符*,地指的是地址運算符&,長指的是長度運算符Sizeof
「三乘除,四加減,五移位」 指的是第13級到第11級的運算符。其中三四五並無實際意義,只是起區分級別而已。也可以想像三指的是第13級運算符。乘除指的是乘法運算符*和除法運算符/,加減指的是加法運算符+和減法運算符-,移位指的是左移運算符<<和右移運算符>>
「千萬別把魚忘記,它在盛飯的廚子里」指的是求余運算符%,它位於盛飯的廚子里,即指和乘法運算符、除法運算符在一起。
「小燈大燈燈燈不等」 指的是第10級到第9級的運算符。其中小燈大燈指的是關系運算符<、<=、>和>=,燈燈指的是等於運算符==,不等指的是不等於運算符!=
「爸喂魚,舅疑惑,裸雞也疑惑」指的是第8級到第4級的運算符。其中,爸喂魚之指的是第8級的按位與運算符&,舅疑惑指的是第7級的按位異或運算符^和第6級的按位或運算符||,裸雞也疑惑指的是第5級、第4級的邏輯與運算符&&和邏輯或運算符||
「十三姨,十四父,十五逗,兜到低」 指的是第3級到第1級的運算符。其中,十三姨指的是條件運算符?: (三有雙重含義,即指?:的優先順序別是三,它的運算符類型也是三目,?難道不是姨即疑惑嗎?),十四父的十四沒有實際意義,父指的是賦值運算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、 ^=和|= ,十五逗指的是第1級的運算符,兜到低指的是15級運算符以,結束。
附錄:C語言運算符及優先順序
優先順序 運算符 含義 運算符類型 結合方向
15 () 圓括弧 單目 自左向右
[] 下標運算符
—> 指向結構體成員運算符
、 結構體成員運算符
14 ! 邏輯非運算符 自右向左
~ 按位取反運算符
++ 自增運算符
-- 自減運算符
- 負號運算符
(類型) 類型轉換運算符
* 指針運算符
& 地址運算符
Sizeof 長度運算符
13 * 乘法運算符 雙目 自左向右
/ 除法運算符
% 求余運算符
12 + 加法運算符
- 減法運算符
11 << 左移運算符
>> 右移運算符
10 <、<=、>、>= 關系運算符
9 == 等於運算符
!= 不等於運算符
8 & 按位與運算符
7 ^ 按位異或運算符
6 | 按位或運算符
5 && 邏輯與運算符
4 || 邏輯或運算符
3 ?: 條件運算符 三目 自右向左
2 =、+=、-=、*=、
/=、%=、>>=、
<<=、&=、^=、|= 賦值運算符 雙目
1 , 逗號運算符 雙目 自左向右
②
括弧成員第一; //括弧運算符[]() 成員運算符. ->
全體單目第二; //所有的單目運算符比如++ -- +(正) -(負) 指針運算*&
乘除餘三,加減四; //這個"余"是指取余運算即%
移位五,關系六; //移位運算符:<< >> ,關系:> < >= <= 等
等於(與)不等排第七; //即== !=
位與異或和位或; //這幾個都是位運算: 位與(&)異或(^)位或(|)
"三分天下"八九十;
邏輯或跟與 //邏輯運算符:|| 和 &&
十二和十一; //注意順序:優先順序(||) 底於 優先順序(&&)
條件高於賦值, //三目運算符優先順序排到 13 位只比賦值運算符和","高//需要注意的是賦值運算符很多!
逗號運算級最低! //逗號運算符優先順序最低
由於C語言的運算符優先順序與C++的不完全一樣(主要是增加了幾個運算符),所以這個口訣不能完全實用於C++.但是應該能夠兼容,大家可以比較一下他們的區別應該就能夠很快掌握C++的優先順序的!
((*strDest++=*strSrc++)!='\0'); :
重點:++後增運算符優先順序高於*
1.*strDest++相當於 *(strDest++)
2.由於是後自增,故執行順序為:
*strDest=*strSrc
strDest++ strsrc++ //該級順序不明
將*strDest與'\0'比較 //即,整個表達式的值為*strDest與'\0'的比較結果
值得注意的是,對於賦值表達式,表達式本身的值等於左邊子表達式的值。
通過以上深入的分析,我們知道這個表達式完成了以下多個功能:
1.對於指針strDest, strSrc,將strSrc所指的內存空間的值賦給由strDest所指的內存空間。
2.判斷賦值後的strDest所指的內存空間的指是否等於0。
3.對於指針strDest,strSrc,他們的值分別加1,即指向下一個元素。
即:該表達式實現了以下三個功能:
1.對於指針strDest, strSrc,將strSrc所指的內存空間的值賦給由strDest所指的內存空間。
2.判斷賦值後的strDest所指的內存空間的值是否等於0。
3.對於指針strDest,strSrc,他們的值分別加1,即指向下一個元素。