關係表示式的重點是關係運算子,有以下幾個。
關係運算子
意義大於,即前者大於後者(以下略)
小於等於,「=」的意思是賦值
不等於大於等於
小於等於
優先順序:
關係運算子的優先順序,比 運算子 的優先順序低。
例如: a+1 > b; 先進行計算的是a+1,然後判斷a+1>b是真還是假
c-風格字串的表示式判斷:
當我們判斷乙個變數是否等於1時,我們可以用 a==1;來進行判斷,假如等於,返回true,假如不等於,返回false。
但是在c-風格字串中,是不能這麼做的。
原因在於,字串的變數名,實際上是字串的記憶體位址。
假如乙個指標指向這個字串記憶體位址,那麼這個指標可以和這個字串的變數名相等。
但是若兩個字串之間進行判斷,那麼就不用用「==」來進行判斷了。
應使用函式strcmp(
字串1,字串2
)來進行判斷,
假如相同,則返回值為0,
假如不等,則返回值為1.
注意,這個函式內的字串1和字串2,實際上是記憶體位址。即,這個函式通過記憶體位址來判斷記憶體位址的值是否相等。
上**:
#includeint main()
system("pause");
return 0;
}
輸出:
aello
bello
cello
dello
eello
fello
gello
hello
請按任意鍵繼續. . .
總結:①可以這麼理解:
strcmp(字串1,字串2)根據記憶體位址,判斷字串是否不同。
是不同,返回true——即1
是相同,返回false——即0
是不同,則繼續執行迴圈語句
是相同,則不執行迴圈語句。
——不這樣理解好彆扭,這樣理解也好彆扭。
②按照說明,strcmp需要標頭檔案
,但實際中,我沒引用也可以正常使用啊?
③變種:
strcmp(字串1,字串2)==0;
這個表示式的意思就是,判斷字串是否相同:
相同,前面部分為0,表示式為1——繼續執行迴圈語句
不同,前面部分為1,表示式為0——停止執行迴圈
和不帶==0的剛好相反。
不帶「==0」的,相同,停止執行。——用於需要相同字串時
帶「==0」的,相同,繼續執行。——用於需要不同字串時
string類字串判斷:
和c-風格字串判斷相比,要簡單的多,可以直接用「==」或者「!=」關係判斷符來判斷兩個string類字串是否相同。
例如:for (int i = 1;aa!=bb;i++)
只需要將前面的**strcmp(aa,bb)改為aa!=bb;即可。
因為滿足不等於,則執行迴圈,滿足等於,則不執行迴圈。
迴圈和關係表示式
一 for迴圈 1.在引入bool型別之前,關係表示式為ture 被判定為1 如果為false,被判定為0。2.函式cout.setf 設定了乙個標記。該標記命令cout顯示ture和false,而不是1和0。函式引數為cout.setf ios base boolalpha 但在老式c 可能要求使...
正規表示式規則(十一)
如果要要求表示式所匹配的內容是整個字串,而不是從字串中找一部分,那麼可以在表示式的首尾使用 和 比如 d 要求整個字串只有數字。4.3 如果要求匹配的內容是乙個完整的單詞,而不會是單詞的一部分,那麼在表示式首尾使用 b 比如 if while else void int b 來匹配程式中的關鍵字。4...
表示式 表示式樹 表示式求值
總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...