4. 數(shù)據(jù)類型
4.1. 數(shù)據(jù)類型分類與概述
4.1.1. 標量類型:
標量類型也可以理解為“基本類型”,“簡單類型”碎罚。
標量類型包括如下4種:
字符串類型:String
就是一串字符串料身,當做一個整體麻掸,表示一個連續(xù)有確定順序的字符串母廷。
通常需要使用單引號或雙引號來引起來石抡,比如:
$name = “張三”;
整數(shù)類型:Int檐嚣, Integer
浮點數(shù): Float, Double
就是數(shù)學上的小數(shù)啰扛。
布爾類型: Bool嚎京, Boolean
這種數(shù)據(jù)類型只有兩個數(shù)據(jù):true, false
$is_graduate = true;
$hasMoney = false;
4.1.2. 復合類型:
就是“數(shù)組”(Array)和“對象”(Object)兩種隐解。
4.1.3. 特殊類型:
空類型: 有且只有一個數(shù)據(jù)可以使用鞍帝,那就是null
資源類型:后續(xù)再說。煞茫。帕涌。。 resource
4.2. 整型****integer续徽,int
1.2.1. 四種書寫形式
整型分為正負整數(shù)
可以有4種直接書寫的形式:
10進制形式:
$n1 = 123;
8進制形式:
$n1 = 123; //以0開頭
16進制形式:
$n1 = 12A34; //以0x開頭蚓曼,還可以有A,B钦扭,C纫版,D,E客情,F(xiàn)這個6個“16進制數(shù)字”
2進制形式:
$n1 = 1011011010; //以0b開頭
下表為進制對比:
10進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 |
16進制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 10 |
2進制 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 |
4.2.2. 進制的相互轉換
直接通過系統(tǒng)函數(shù)來進行捎琐,能完成:
10進制轉為2, 8, 16進制:
decbin():將10進制轉為2進制
decoct():將10進制轉為8進制
dechex():將10進制轉為16進制
或:
2, 8, 16進制轉為10進制:
bindec():將2進制數(shù)字字符串轉為10進制
octdec():將8進制數(shù)字字符串轉為10進制
hexdec():將16進制數(shù)字字符串轉為10進制
<u>演示:</u>
總結一下進制轉換的單詞:
dec:10進制
oct: 8進制
hex: 16進制
bin: 2進制
思考題:
怎么將一個8進制的數(shù), 轉換為16進制裹匙?思路:先把八進制轉換成10進制瑞凑,然后將10進制轉換為16進制
4.3. 浮點型****float
浮點數(shù)就是相當于數(shù)學上的“小數(shù)”
兩種書寫形式:
直接小數(shù)點形式:
$f1 = 0.1; //或者1.23; 123.0;
科學計數(shù)法
$f2 = 1.23e3; //表示1.23 乘以10的3次方
$f3 = 123e2; //這個也是浮點數(shù),雖然其結果值是一個“整數(shù)”(12300)
//**特別注意:浮點數(shù)不要做相等比較(==)**:因為浮點數(shù)進行相等比較概页,是“不可靠”的:
$v1 = 0.1 + 0.2;
$v2 = 0.3;
問:$v1和$v2相等嗎籽御?
<u>需要在考慮精度的基礎上,將浮點數(shù)轉換為整數(shù),然后進行“比較大小”技掏,此時铃将,在精度范圍內(nèi),如果相等哑梳,我們就認為是相等的</u>
float:單精度浮點型 最大只有8位是精確 1.3456806789067890
double:雙進度浮點型 最大可以有16位是精確 0.5678903456890456789034567890
4.4. 布爾型****Boolean
只有兩個數(shù)據(jù)值: true劲阎, false(不區(qū)分大小寫)
在需要當做“布爾值”進行判斷或比較的時候,以下數(shù)據(jù)會被當作布爾值的 false:
false, 0, 0.0, “”, null, ‘0’, 空數(shù)組
其余都被當做布爾值的 true鸠真。
常見應用代碼類似這樣:
$v1 = 某某值;
if( $v1 ) { //此時悯仙,如果$v1為上述值之一,就會當做false吠卷,不執(zhí)行其中的代碼锡垄。
。祭隔。货岭。代碼。疾渴。千贯。
}
//而對于其他值,就會當做true搞坝,因此就會執(zhí)行其中的代碼丈牢。
4.5. 字符串型****String
可以使用單引號或雙引號來表示(引起來)。
表示一串“連續(xù)的字符”瞄沙,最短的字符串是“空字符串”,比如:
$str1 = “”慌核。
注意:這個不是空字符串: “ ”距境, 因為其中包括了1個空格字符。
$name = “張三”;
$edu = ‘北京大學’;
$title = “關于微信應用的幾個改進建議”垮卓; //文章標題
$v1 = ‘’; //這也是字符串(空字符串)
$v2 = ‘123’; //這還是字符串
$v3 = “false”; //這仍然是字符串
特別注意:
雙引號字符串中垫桂,如果出現(xiàn)“$”符號,則該符號后的連續(xù)字符(單詞)會被識別為一個變量名粟按。
如果識別成功(即確實存在該變量)诬滩,則會將該變量轉換為實際內(nèi)容。
如果識別失斆鸾(即實際沒有該變量)疼鸟,則會報錯。
4.6. 數(shù)組****類****型****Array
數(shù)組庙曙,就是將多個“數(shù)據(jù)”放在一起空镜,排成一個序列,這個序列作為一個整體(里面包括了多個數(shù)據(jù)),就稱為“數(shù)組”吴攒。比如:
$arr1 = array(‘張三豐’, 18, “男” );
或另一種形式:
$arr2 = array(‘name’=> ‘張三豐’, ‘a(chǎn)ge’=>18, ‘gender’=> “男” );
數(shù)組的賦值:
$數(shù)組變量[下標] = 一個值张抄;
數(shù)組的取值:
行為為:$數(shù)組變量[下標]
比如: echo $arr1[0]; print_r( $arr2[‘name’] );
其內(nèi)部結構洼怔,可以這樣去理解:
$info
內(nèi)部結構:
鍵名/下標/索引 | 0 | 1 | 2 |
---|---|---|---|
值 | ‘張三豐’ | 18 | ‘男’ |
這種下標署惯,通常稱為“數(shù)字下標”。
$info2內(nèi)部結構:
鍵名/下標/索引 | ‘name’ | ‘a(chǎn)ge’ | ‘gender’ |
---|---|---|---|
值 | ‘張三豐’ | 18 | ‘男’ |
這種下標镣隶,通常被稱為“字符串下標”冕象。
4.7. 空類型****NULL
只有一個值: null(不區(qū)分大小寫)。
$v1 = null;
//此時又固,具有變量$v1,但其中的數(shù)據(jù)是“空的”(沒有數(shù)據(jù))
空值變量觉阅,isset()判斷的結果是false(即不存在)。
重點: 輸出方式
echo:是PHP中最常用的一種輸出方式嗜闻,效率最高蜕依,不是函數(shù),如果是以下幾種數(shù)據(jù)類型琉雳,都是用echo進行輸出: 字符串样眠、整型、浮點型
語法: echo 變量/值
var_dump():是一個函數(shù)翠肘,它能夠輸出除了變量的值之外檐束,還能輸出其數(shù)據(jù)類型,一般有以下幾個場景: 布爾類型束倍、數(shù)組被丧、對象、資源绪妹、想要知道變量數(shù)據(jù)類型的
print_r():是一個函數(shù)甥桂,跟var_dump()唯一的區(qū)別就是不能輸出變量的數(shù)據(jù)類型
4.8. 類型****判斷
gettype(): 獲取一個變量的類型,結果為一個變量類型的名稱(字符串)
$v1 = 10;
$r1 = gettype( $v1 ); //結果為:“integer”
$v2 = ‘a(chǎn)bc’;
$r2 = gettype( $v2 ); //結果為:“string”
settype(): 設置一個變量的類型(數(shù)據(jù)類型的重新轉換)
$v1 = 10; //此時邮旷,$v1中數(shù)據(jù)是整數(shù)類型
settype( $v1, ‘string’); //此時黄选,$v1是字符串類型,即其中的數(shù)據(jù)變成了:“10”
判斷是否為某種類型(類型系列函數(shù)):
is_int() / is_integer():判斷是否為整數(shù)類型
is_float():判斷是否為浮點類型
is_bool():判斷是否為布爾類型
is_string():婶肩。办陷。。
is_array():律歼。民镜。。
is_numeric():判斷是否為“數(shù)字”類型(含整數(shù)险毁,小數(shù)殃恒,以及“純數(shù)字字符串”)
is_object():
兩個特殊判斷:
isset(): 判斷一個變量中是否有數(shù)據(jù)植旧,如果有返回true,如果沒有(即此時就是null)返回false
empty():判斷是否為“空的”离唐。如果確實是“空的”病附,返回true,否則返回false亥鬓。
“空的”的意思完沪,比較接近日常生活中的“沒有”。
而空(null)是一個計算機中的特殊概念嵌戈,表示“完全不存在”覆积,可以理解為“真空”。
4.9. 類型轉換
4.9.1. 自動轉換
我們無需做任何處理熟呛,而是宽档,程序會根據(jù)運算時運算符所需要的數(shù)據(jù)類型進行轉換。
如果參與運算的數(shù)據(jù)不是需要的類型庵朝,則會自動轉換為需要的數(shù)據(jù)類型吗冤。
$v1 = 1 + “3”; //結果是4;
$v2 = 1 . “3”; //“.”是字符串連接符九府,這里椎瘟,1會被轉換為字符串,結果是:“13”
典型自動轉換:
轉換為數(shù)字:
1+”2” //3
“1”+ “2” //3
1 + ”2abc” //3
1 + ”2abc34” //3
1 + “abc” //1
1 + “abc2” //1
1.2 + “2” //3.2
1.2 + “2.2abc” //3.4
1.2 + “abc2.2” //1.2
“1.2abc” + 2 //3.2
“1.2abc”+ “2abc” //3.2
轉換為整數(shù):
10.8 % 3.6
“10.8” % “3.6”
“10.8” % “3.6abc”
“10.8ab” % “3.6cd”
4.9.2. 強制轉換:
人為使用強轉換語法進行轉換侄旬,比如:
$v1 = (int) “1”; //結果肺蔚,$v1是整數(shù)類型的1
$v2 = (float) “1.23”; //結果,$v2是浮點類型的1.23
$v3 = (string) $v1; //結果儡羔,$v3是字符串“1”
5. 算符詳解
5.1. 概述:
5.1.1. 含義
就是對數(shù)據(jù)進行某種所需要的運算的語法符號宣羊,比如加減乘除,或比較大小汰蜘,或判斷真假仇冯。
5.1.2. 按參與運算的數(shù)據(jù)的個數(shù)來分類
單目運算符:
只需要一個數(shù)據(jù)——但必須是變量。
雙目運算符:
需要兩個數(shù)據(jù)——可以是變量鉴扫,也可以直接的數(shù)據(jù)本身。
三元運算符:
需要3個數(shù)據(jù)才能運算澈缺,也稱為三目運算符坪创。
只有一個三元運算符。
5.1.3. 按功能分類
賦值運算符:
=
算術運算符:
+ - * / %
連接運算符:
.
自賦值運算符:
+= -= *= /= %= .=
自操作運算符:
++ --
比較運算符:
> >= < <= == != === !==
邏輯運算符:
&&(與) ||(或) =闵摹(非)
條件運算符:
數(shù)據(jù)1 ? 數(shù)據(jù)2 : 數(shù)據(jù)3
位運算符:
& | ~
其他:
@莱预,是錯誤抑制符
( ),括號项滑,用于提升運算優(yōu)先級依沮,括號中的先運算。
5.2. 賦值運算符
只要理解一個核心的觀念:
就是將等號(=)右邊的數(shù)據(jù)(可能是運算結果數(shù)據(jù))賦值給左邊的變量。
看看一下寫法:
$v1 = 1;
$v2 = 2;
$v3 = $v1 + $v2;
$v1 + $v2 = $v3; //可以嗎危喉?不可以宋渔!
if( $v1 + $v2 = $v3 ){....} //可以嗎?辜限?皇拣?還是不可以!
一定記住薄嫡,一個等號的左邊氧急,只能是一個“變量名”!
所以毫深,這個寫法是錯誤的: v2 + 3
5.3. 算術運算符
針對數(shù)字進行的算術計算吩坝,包括:+ - * / %
%:對整數(shù)數(shù)字進行“取余操作”——如果不是整數(shù),會先自動轉換為整數(shù)之后再進行取余哑蔫。轉換為整數(shù)的做法是:直接去掉小數(shù)部分
比如:
$v1 = 10 % 3; //結果為1
$v2 = 10.8 % 3.6 //結果為1
如果不是數(shù)字钉寝,會自動轉換為數(shù)字進行。
5.4. 連接運算符( . )
就是字符串的連接鸳址,能夠?qū)⑶昂笞址B接起來瘩蚪。
如果不是字符串,會自動轉換為字符串稿黍。
$v1 = “ab”. “cd”;
$v2 = $v1 . “ef”;
$v3 = “ab” . 12; //“ab12”
$v4 = 12 . 34; //”1234”
$v5 = “12” . true; //“121”疹瘦,true轉為字符串,為“1”巡球;
$v6 = “12” . false; //“12”言沐,false轉為字符串,為“”(即空字符串)酣栈;
<u>演示:</u>
5.5. 自賦值運算符
針對數(shù)字的险胰,包括: += -= *= /= %=
針對字符串的,只有一個:.=
形式:
變量 = $變量 + 數(shù)據(jù)起便;
此時,其實是相當于該變量的值窖维,跟給定的數(shù)據(jù)進行運算后的結果數(shù)據(jù)榆综,再放回到該變量中(覆蓋了之前的數(shù)據(jù))。
5.6. 自操作(自加自減)運算符
針對整數(shù)铸史,只有2個:++ --
屬于單目運算符鼻疮,即只要一個變量就可以進行運算。
形式:
$變量++琳轿; //對該變量中數(shù)據(jù)+1
$變量--判沟; //對該變量中數(shù)據(jù)-1
++$變量耿芹; //對該變量中數(shù)據(jù)+1
--$變量; //對該變量中數(shù)據(jù)-1
++討論:
表示對該變量進行“自加1”操作挪哄。即該變量中的數(shù)據(jù)加1吧秕。
前自加:
后自加:
<u>舉例:</u>
總結:
1,前自加中燥,后自加寇甸,對變量本身的結果都是加1,沒有區(qū)別疗涉。
2拿霉,但前自加、后自加如果跟別的運算符一起進行咱扣,此時區(qū)別為:
前自加:先發(fā)生自加绽淘,后做別的運算;
后自加:先發(fā)生別的運算闹伪,后自加沪铭。
5.7. 比較運算符
含義:
是針對數(shù)字的大小進行比較的運算。
如果不是數(shù)字偏瓤,會自動轉換為數(shù)字杀怠。
包括: > >= < <= == != === !==
所有比較運算符,運算的結果只有兩個可能(之一): true 或 false
比如:
if( 1 == 2); //結果是false
等于(==)和全等于(===)的區(qū)別:
通常厅克,等于(==)也會用“模糊相等”或“松散比較”的說法赔退。
兩個數(shù)據(jù)“基本相等”(類型可能會發(fā)生自動轉換),就算是相等证舟。
全等于(===)就是完全相等:
只有兩個數(shù)據(jù)的數(shù)據(jù)類型一樣硕旗,并且其值也一樣的時候,才是全等女责。
查手冊》》附錄》類型比較表:
不等于: 漆枚!=
兩個數(shù)據(jù)不滿足“==”這個運算結果,不等于(抵知!=)的結果就是true墙基,比如:
if( 1 != 2 ) //true
不全等于:!==
兩個數(shù)據(jù)不滿足“===”這個運算結果刷喜,不全等于(残制!==)的結果就是true,比如:
if( “1” !== 1 ) //true
5.8. 邏輯運算符
針對“布爾值”進行的運算吱肌,只有3個:
與: &&
或: ||
非: 痘拆!
如果不是布爾值仰禽,會自動轉換為布爾值去進行運算氮墨。
因為布爾值只有2個纺蛆,不管怎么排列組合,最終只有以下10種情況的計算规揪,幾乎就是公式化桥氏。
5.8.1. 邏輯與(&&):
含義:
表示兩個條件(數(shù)據(jù))的真假結果是否同時為真的共同作用結果。
運算結果:只有兩個條件都為真的時候猛铅,結果才是真(true)字支。
只有如下4種情況:
true && true 結果為 true
true && false 結果為 false
false && true 結果為 false
false &&false 結果為 false
總結歸納出邏輯與(&&)的真值表(就是公式,類似99乘法表):
| $v1, $v2```表示任意變量(條件) | $v1 = true時 | $v1 = false時 |
| ---------------------------- | ------------------ | ------------------ |
| $v2 = true時 | $v1 && $v2 :true | $v1 && $v2 :false |
| $v2 = false時 | $v1 && $v2 :false | $v1 && $v2 :false |
可見:邏輯與運算的結果奸忽,只有兩個是真堕伪,才是真。
實際應用中栗菜,往往是以“條件”的面目出現(xiàn)欠雌,而不是簡單的真假值,比如:
$v1 = 18; //請判斷該數(shù)是否能被3整除并且還能被5整除疙筹!
if( $v1 % 3 == 0 && $v1 % 5 == 0 ){....}
5.8.2. 邏輯或(||):
含義:
表示兩個條件(數(shù)據(jù))的真假結果的是否存在“真”的情況的共同作用結果富俄。
運算規(guī)則:
只要有任意一個條件為真(true),結果就是真而咆。
只有如下4種情況:
true || true 結果為 true
true || false 結果為true
false || true 結果為 true
false ||false 結果為 false
總結歸納出邏輯或(||)的真值表(就是公式霍比,類似99乘法表):
| $v1, $v2表示任意變量(條件) | $v1 = true時 | $v1 = false時 |
| ---------------------------- | ----------------- | ------------------ |
| $v2 = true時 | $v1 || $v2 :true | $v1 || $v2 :true |
| $v2 = false時 | $v1 || $v2 :true | $v1 || $v2 :false |
可見:邏輯或運算的結果,只要有一個是真暴备,就是真悠瞬。
也稱之為“短路運算符”:只要有一個為真,就不需要管其他的了馍驯。
實際應用中阁危,往往也是以“條件”的面目出現(xiàn),而不是簡單的真假值汰瘫,比如:
$v1 = 18; //請判斷該數(shù)是否能被3整除或能被5整除狂打!
if( $v1 % 3 == 0 || $v1 % 5 == 0 ){....}
案例:
判斷某年是否為閏年(可使用表單輸入的形式)
特點:能被4整除且不能被100整除或者能被400整除
5.8.3. 邏輯非(!):
就是對一個布爾值進行“取反”操作混弥,規(guī)則為:
!true 結果為false
!false 結果為true
邏輯非(E肯纭)在if中的常見應用情形:
if( !isset( $v1 ) ){....} //如果$v1為空(null)
if( !empty( $v1 ) ){...} //如果$v1不為空(empty)
對應的兩個相反的情形是:
if( isset( $v1 ) ){....} //如果$v1存在
if( empty( $v1 ) ){...} //如果$v1為空(empty)
區(qū)分兩個“空”:
null: “真空”,什么都沒有蝗拿,是明確定義的“沒有數(shù)據(jù)”的一種寫法(含義)
empty:“現(xiàn)實意義上的沒有”晾捏,就是無,就是0,等等哀托,常見的惦辛,認為是empty的數(shù)據(jù)有:
“”(空字符串), 0, 0.0, “0”, false, null, 空數(shù)組,
還是查手冊》附錄》類型比較表:
5.8.4. 邏輯運算的短路規(guī)則:
短路:
就是對于“邏輯與” 或 “邏輯或”這兩種運算符仓手,他們可能會只進行左側的邏輯判斷之后胖齐,立即就中斷后續(xù)(右側)的判斷玻淑,而得出整個邏輯運算符的運算結果!
if ( 左側判斷 && 右側判斷 )
if ( 左側判斷 || 右側判斷 )
舉例:
判斷一個整數(shù)(比如13)是否能被3整除并且能被5整除呀伙!
結論:
我們應該將我們可能發(fā)生短路運算的邏輯判斷的前后判斷語句补履,做如下調(diào)整:
相對簡單的運算放前面(左側),相對復雜的運算放后面(右側)剿另。
對于邏輯或的短路運算箫锤,道理一樣。
5.9. 條件運算符(三目運算符)
只有一個條件運算符雨女,形式為:
表達式1 谚攒?表達式2 :表達式3
等同于
if(條件表達式){
條件表達式為真時,執(zhí)行這里
}else{
條件表達式為假時氛堕,執(zhí)行這里
}
含義:
如果表達式1為true(或自動轉換后為true)五鲫,則運算的結果值為表達式2,否則為表達式3岔擂。
舉例:
$score = 77; //分數(shù)
$v1 = $score >= 60 ? “及格” : “不及格”位喂; //及格
其本質(zhì)是:
$score = 77; //分數(shù)
if ( $score >= 60 ){
$v1 = “及格”;
}else{
$v1 = “不及格”乱灵;
}
5.10. 位運算符(了解)
面試題:
計算結果: 3|5 3&5 3|4&5
針對整數(shù)進行的二進制級別的運算塑崖。
基本位運算符包括:按位與( & ), 按位或( | )痛倚, 按位非( ~ )规婆, 按位異或(^)
5.10.1. 位運算基本運算規(guī)則:
位運算符有如下基本運算規(guī)則:
(只針對二進制的0和1這兩個數(shù)據(jù)的基本位運算規(guī)則):
按位與(&)運算規(guī)則:
0 & 1 結果為:0
0 & 0 結果為:0
1 & 0 結果為:0
1 & 1 結果為:1
結論:只有兩個都是1,按位與運算結果才是1
按位或(|)運算規(guī)則:
0 | 1 結果為:1
0 | 0 結果為:0
1 | 0 結果為:1
1 | 1 結果為:1
結論:只有兩個都是0蝉稳,按位或運算結果才是0
按位非(~):
~1結果為0
~0結果為1
按位異或(^):
0 ^ 1 結果為:1
0 ^ 0 結果為:0
1 ^ 0 結果為:1
1 ^ 1 結果為:0
規(guī)則是:相同為0抒蚜,不同為1
5.10.2. 整數(shù)的按位與(&)運算
含義:
是針對整數(shù)的二進制值進行的位運算結果。
$v1 = 6 & 8; //這里耘戚,雖然是普通整數(shù)嗡髓,但其內(nèi)部是按該整數(shù)的二進制形式進行位運算
運算規(guī)則:
將6和8的二進制數(shù)字的每一個對應位上的數(shù)字(0或1)進行基本的按位與(&)的運算所得到的結果。
數(shù)字6的二進制 | 0 | 1 | 1 | 0 | ||||
---|---|---|---|---|---|---|---|---|
數(shù)字8的二進制 | 1 | 0 | 0 | 0 | ||||
按位與結果 | 0 | 0 | 0 | 0 |
結果:0
再來一個:
$v2 = 3 & 5;
數(shù)字3的二進制 | 0 | 1 | 1 | |||||
---|---|---|---|---|---|---|---|---|
數(shù)字5的二進制 | 1 | 0 | 1 | |||||
按位與結果 | 0 | 0 | 1 |
結果:1
再來一個:
$v2 = 3 | 5;
數(shù)字3的二進制 | 0 | 1 | 1 | |||||
---|---|---|---|---|---|---|---|---|
數(shù)字5的二進制 | 1 | 0 | 1 | |||||
按位與結果 | 1 | 1 | 1 |
結果:7
$v3=3|4&5 先后順序: 先與再或
數(shù)字3的二進制 | 0 | 1 | 1 | |||||
---|---|---|---|---|---|---|---|---|
數(shù)字4的二進制 | 1 | 0 | 0 | |||||
按位或結果 | 1 | 1 | 1 | |||||
數(shù)組5的二進制 | 1 | 0 | 1 | |||||
按位與運算 | 1 | 0 | 1 |
結果:5
實際結果是7
數(shù)字5的二進制 | 1 | 0 | 1 | |||||
---|---|---|---|---|---|---|---|---|
數(shù)字4的二進制 | 1 | 0 | 0 | |||||
按位與結果 | 1 | 0 | 0 | |||||
數(shù)組3的二進制 | 0 | 1 | 1 | |||||
按位或運算 | 1 | 1 | 1 |
結果:7
5.11. 錯誤抑制符@
含義:
在一個表達式出現(xiàn)錯誤的時候收津,可以將錯誤“隱藏”(掩蓋)起來(不輸出)饿这!
通常,該符號撞秋,用于在實際運行環(huán)境中的一些條件非我們(程序員)所能控制的情形长捧。
如果出現(xiàn)該情形并報錯,則我們可以抑制該錯誤的顯示(只是該錯誤不顯示吻贿,不是沒有錯誤了)串结。
說明:錯誤抑制符只能抑制如“notice”“warning”之類的錯誤,“Parse”是無法抑制。
5.12. 運算符的優(yōu)先級
運算符優(yōu)先級不得不說的規(guī)則:
1肌割,時刻意識到赵抢,運算符有優(yōu)先級問題!
2声功,小括號可以改變運算的順序(即括號最優(yōu)先)
3,先乘除(以及取余)后加減宠叼;
4先巴,大致有如此優(yōu)先級規(guī)則:算術運算 > 比較運算 > 邏輯運算>賦值運算
5,賦值運算符通常都是最后(優(yōu)先級最低)
細致的可以看手冊冒冬。