一朵栖、運(yùn)算符初步
1.介紹
運(yùn)算符連接操作數(shù)或者表達(dá)式癞志。
1)分類(lèi)
按照操作數(shù)的數(shù)目:
單目運(yùn)算符: 操作數(shù)只有一個(gè) ++ --
雙目運(yùn)算符: 操作數(shù)只有兩個(gè) + - * /
三目運(yùn)算符: ?:
條件判斷抱慌?表達(dá)式1:表達(dá)式2
吃了么?喝點(diǎn)飲料:來(lái)塊面包
滿(mǎn)足條件,返回表達(dá)式1边琉,否則返回表達(dá)式2
按照功能來(lái)分:
算術(shù)運(yùn)算符: + - * / % (加減乘除 取余)
賦值運(yùn)算符: = ,賦值運(yùn)算表達(dá)式的值也就是所賦的值
自操作 ++ -- += -= *= /= %=
a = $a +2;
比較運(yùn)算符: > < >= <= == === != !==
邏輯運(yùn)算符: && || 记劝!
位運(yùn)算符:& | ~ ^ << >>
條件運(yùn)算符: 变姨?:
字符串連接符: . (相當(dāng)于js里面的+)
錯(cuò)誤抑制符 :@
2)運(yùn)算符的優(yōu)先級(jí)
①算術(shù)運(yùn)算: 先乘除后加減。
②算術(shù)運(yùn)算符 > 比較運(yùn)算符 > 邏輯運(yùn)算符 > 賦值運(yùn)算符
③()去改變運(yùn)算的優(yōu)先級(jí)
二厌丑、運(yùn)算符進(jìn)階
1.特殊的運(yùn)算符
1)字符串連接符
. 遇到較長(zhǎng)的字符串可以先拼接再輸出
2)字符串分割符
注意:雙引號(hào)里面解析變量定欧,單引號(hào)不解析,如果字符串里面沒(méi)有變量那么盡量
3)錯(cuò)誤抑制符
@放在表達(dá)式之前怒竿,忽略錯(cuò)誤信息
可以放在變量砍鸠,常量及函數(shù)的調(diào)用之前。
2.算術(shù)運(yùn)算符
1)加減乘除
- /
2)取余運(yùn)算符%
1/2 0 1 1 是被除數(shù)耕驰, 2 是除數(shù)
取余的結(jié)果爷辱,取決于被除數(shù)的符號(hào),與除數(shù)的符號(hào)無(wú)關(guān)朦肘。
3.自操作運(yùn)算符
++ 饭弓,--, +=媒抠,-=弟断,*= 等
1)++ -- 兩種使用方法
4.賦值運(yùn)算符
1)功能
將右側(cè)表達(dá)式的結(jié)果賦值給左側(cè)的變量。
2)右結(jié)合性
b =
c= 100;
第二步 c;
第三步 b
5.比較運(yùn)算符
1)介紹
< >= <= == != ===(全等) !==(不全等)
比較結(jié)果: true 或者false
特例:
如果兩個(gè)布爾值之間的比較领舰。
image.png
2) 除全等和不全等之外的比較運(yùn)算符的運(yùn)算原則
不同類(lèi)型之間的比較夫嗓,會(huì)出現(xiàn)類(lèi)型的自動(dòng)轉(zhuǎn)換。
①字符串之間的大小比較遵循的原則
使用字符編碼比較(ASCII碼 (數(shù)字越向后越大 例b>a;
)ASCll的1=)冲秽;第一個(gè)字符能比較出來(lái)結(jié)果舍咖,后面的字符不進(jìn)行比較。
ASCll碼參考 <u>http://ascii.911cha.com/</u>
②不同類(lèi)型之間相互比較遵循的原則
如果比較的數(shù)據(jù)中有布爾值锉桑,轉(zhuǎn)為布爾值進(jìn)行比較排霉。
否則,有數(shù)字值民轴,就轉(zhuǎn)為數(shù)字值進(jìn)行比較攻柠。
否則球订,如果兩邊都是純數(shù)字的字符串,轉(zhuǎn)為數(shù)字進(jìn)行比較瑰钮。
否則冒滩,就按字符串比較。
3)===(全等)與==(等于)的區(qū)別
===判斷類(lèi)型和值全部相等浪谴,才是全等
== 只判斷值开睡,不判斷類(lèi)型。
6.邏輯運(yùn)算符
與(&& and) 或(||, or) 非(9冻堋) 異或(xor)
1)運(yùn)算原則
與 :全真為真篇恒,其余為假(一假為假)
true && true 結(jié)果 true
true && false 結(jié)果 false
false && false 結(jié)果 false
或 :全假為假,其余為真(一真為真)
true || true 結(jié)果 true
true || false 結(jié)果 true
false || false 結(jié)果 false
非 : 非真即假凶杖,非假即真
!true false
!false true;
異或 :相同為假胁艰,不同為真
true xor true 結(jié)果 false
false xor false 結(jié)果 fasle
true xor false 結(jié)果 true
2)短路運(yùn)算
或運(yùn)算的短路運(yùn)算:
第一個(gè)表達(dá)式返回為true。后面的表達(dá)式不執(zhí)行智蝠。
與運(yùn)算的短路運(yùn)算:
第一個(gè)條件為false,進(jìn)行短路運(yùn)算腾么,后面的表達(dá)式不執(zhí)行。
3)短路運(yùn)算案例 常量定義
define定義一個(gè)常量
defined判斷define是否定義了那個(gè)常量
4)邏輯運(yùn)算符的優(yōu)先級(jí)
&&寻咒,|| > = > and,or
7.條件運(yùn)算符(三元運(yùn)算符)哮翘?:
三元運(yùn)算符是軟件編程中的一個(gè)固定格式,語(yǔ)法是“條件表達(dá)式毛秘?表達(dá)式1:表達(dá)式2”饭寺。使用這個(gè)算法可以使調(diào)用數(shù)據(jù)時(shí)逐級(jí)篩選。
表達(dá)式:“()叫挟? :”艰匙。
1)語(yǔ)法
條件表達(dá)式?表達(dá)式1:表達(dá)式2
條件成立抹恳,返回表達(dá)式1员凝,否則,返回表達(dá)式2
2)應(yīng)用
8.位運(yùn)算符(了解)
& | ~ ^ << >>
1)計(jì)算原則
& 按位與奋献,表示兩位都是1的時(shí)候返回1健霹,否則返回0
| 按位或,表示兩位都是0的時(shí)候返回0瓶蚂,否則返回1
~ 按位非糖埋,非0即1,非1即0
^ 按位異或窃这,兩位不一樣的時(shí)候返回1瞳别,相同的時(shí)候返回0
<< 按位左移 將整個(gè)字節(jié)向左移動(dòng),右邊(低位)補(bǔ)0
按位右移 將整個(gè)字節(jié)向右移動(dòng),
正數(shù)左邊用零填充祟敛,負(fù)數(shù)的左邊用1填充
PHP 實(shí)現(xiàn)了有符號(hào)數(shù)疤坝,最高位為符號(hào)位(1表示負(fù)數(shù),0表示正數(shù))馆铁,
其余31位數(shù)值位跑揉。
2)按位與、或叼架、異或舉個(gè)例子
按位與
1 & 0 => 0
1 &1 => 1
0 &1 => 1
0 &0 => 0
6&5
3)移位運(yùn)算符
<< 向左移位畔裕,>> 向右移位
正數(shù),向左移位乖订,高位移出,低位補(bǔ)0
向右移位具练,低位移出乍构,高位補(bǔ)0
負(fù)數(shù):向左移位,高位移出扛点,低位補(bǔ)0
向右移位哥遮,低位移出,高位補(bǔ)1
三陵究、計(jì)算機(jī)碼
在計(jì)算機(jī)底層眠饮,整數(shù)以二進(jìn)制存儲(chǔ),占4個(gè)字節(jié)铜邮,32個(gè)二進(jìn)制位仪召。
-
4個(gè)字節(jié)
00000000 00000000 00000000 00000000 32個(gè)二進(jìn)制位
PHP 實(shí)現(xiàn)了有符號(hào)數(shù),最高位為符號(hào)位####(1表示負(fù)數(shù)松蒜,0表示正數(shù))扔茅,
其余31位數(shù)值位。
位運(yùn)算使用的是計(jì)算機(jī)補(bǔ)碼秸苗。
QQ截圖20190410201941.jpg
-
11111,1111 ,...,1111,101000
③-6<<2 反碼 =補(bǔ)碼-1 11111,1111 ,...,1111,100111
④-6<<2 原碼 反碼按位取反 00000,0000,...,0000,011000
轉(zhuǎn)成十進(jìn)制 16+8=24
加上符號(hào)位 -24
#一召娜、 流程控制
#1.程序語(yǔ)言的三大流程控制
#1) 順序結(jié)構(gòu)
程序自上而下執(zhí)行
2) 分支(選擇結(jié)構(gòu))
滿(mǎn)足指定條件,執(zhí)行指定代碼
if else
switch case 語(yǔ)句
3) 循環(huán)結(jié)構(gòu)
滿(mǎn)足一定條件惊楼,循環(huán)執(zhí)行指定的代碼玖瘸。
for while do while
#2.(了解)流程圖的基本符號(hào)
#1) 符號(hào)
開(kāi)始,流程走向檀咙,流程雅倒,選擇(判斷),結(jié)束
五攀芯、分支結(jié)構(gòu)
1.if語(yǔ)句
1)條件執(zhí)行 if else
if(條件判斷){
語(yǔ)句塊1
}else{
語(yǔ)句塊2
}
思考題:
①雞翁一值錢(qián)五屯断,雞母一值錢(qián)三,雞雛三值錢(qián)一。百錢(qián)買(mǎi)百雞殖演,問(wèn)雞翁氧秘、雞母、雞雛各幾何趴久?
--張建丘《算經(jīng)》
方法1:
方法2:
②
num2 = 38 求最大公約數(shù)丸相。
②畫(huà)出九九乘法表
方法1:
-
實(shí)現(xiàn)隔行變色:
方法1:
QQ截圖20190410154132.jpg -
用三元運(yùn)算符表達(dá):
方法2:
QQ截圖20190410154309.jpg
QQ截圖20190410205116.jpg
2)if elseif else
if(條件1)
{
語(yǔ)句塊1
}elseif(條件2){
語(yǔ)句塊2
}...
else{
語(yǔ)句塊n
}
3)案例:判斷成績(jī),給出成績(jī)的等級(jí)提示
$score = 99;
if($score >= 90){
echo "優(yōu)秀";
}elseif($score >= 80){
echo "良好";
}elseif($score >= 70){
echo "可以";
}elseif($score >= 60){
echo "及格";
}else{
echo "不及格";
}
2.switch語(yǔ)句
1)語(yǔ)法
switch(表達(dá)式){
case 值1:
語(yǔ)句塊1;
break;
case 值2:
語(yǔ)句塊2;
break;
........
default :
語(yǔ)句塊n;
break;
}
2)說(shuō)明
使用switch里面的表達(dá)式彼棍,和case的表達(dá)式中的值進(jìn)行比較灭忠。相等時(shí)執(zhí)行相應(yīng)的語(yǔ)句塊。直到最后座硕〕谧鳎可以添加break語(yǔ)句,實(shí)現(xiàn)指執(zhí)行一個(gè)case的語(yǔ)句塊华匾。
多個(gè)case 可以共用一個(gè)語(yǔ)句塊映琳。
3)案例 成績(jī)等級(jí)提示
switch(floor($score/10)){
case 10:
case 9:
echo "優(yōu)秀";
break;
case 8:
echo "良好";
break;
case 7:
echo "可以";
break;
case 6:
echo "及格";
break;
default:
echo "不及格";
}