條件-邏輯語句

switch 內(nèi)部變量定義

不允許跨過變量的初始化語句直接跳轉(zhuǎn)到該變量作用域內(nèi)另外一個位置。

int cnt = 1;
switch (cnt) {
    case 0:
        int j;
        break;
    case 1:
        j = 3;
        break;
}
// OK

int cnt = 1;
switch (cnt) {
    case 0:
        int j = 0;
        break;
    case 1:
        j = 3;
        break;
}
//crosses initialization of 'int j'

int cnt = 1;
switch (cnt) {
    case 0:
        string fileName;
        break;
    case 1:
        cout << fileName << endl;
        break;
}
// ?
  • goto 語句
goto end;
int cnt = 1;
end :
cnt = 10;
//crosses initialization of 'int cnt'

begin :
int cnt = 200 - rand();
if (cnt > 0) {
    goto begin;
}
cout << cnt << endl;
// OK

初始化

如果內(nèi)置類型未被顯示初始化,則它的值由定義的位置決定:

  • 定義于任何函數(shù)之外的變量被初始化為0

  • 定義在函數(shù)體內(nèi)部的內(nèi)置類型將不被初始化,不被初始化的內(nèi)置類型變量的值是未定義的

    int g_i;
    int main()
    {
        int i;
        int cnt = 1;
        cout << "g_i = " << g_i << endl;
        cout << "i = " << i << endl;
        return 0;
    }
    
    //g_i = 0
    //i = 16
    
  • 各個類各自決定其初始化對象的方式

聲明vs定義

extern double pi = 3.141592654;  //定義

參考:C++ 隱式初始化和顯示初始化

邏輯表達(dá)式

  • 運(yùn)算優(yōu)先級

    • 邏輯OR、邏輯AND的優(yōu)先級低于關(guān)系運(yùn)算符
    • 邏輯AND的優(yōu)先級高于邏輯OR
    • !運(yùn)算符的優(yōu)先級高于所有的關(guān)系運(yùn)算符、算術(shù)運(yùn)算符
  • 順序點(diǎn)

    變量修改的最晚實(shí)現(xiàn)時刻。

    這個點(diǎn)上,之前所有的賦值所產(chǎn)生的副作用都已發(fā)生完成,并且在其后的賦值不能在該點(diǎn)產(chǎn)生任何副作用。在順序點(diǎn)之間則沒有任何保證。(運(yùn)算符左邊的子表達(dá)式先于右邊的子表達(dá)式)

    • 分號;
    • 未重載的逗號運(yùn)算符的左操作數(shù)賦值之后(即“,”處)
    • 未重載的”||”運(yùn)算符的左操作數(shù)賦值之后(即“||”處)
    • 未重載的“&&”運(yùn)算符的左操作數(shù)賦值之后(即"&&"處)
    • 三元運(yùn)算符“? : ”的左操作數(shù)賦值之后(即“?”處)
    • 在函數(shù)所有參數(shù)賦值之后但在函數(shù)第一條語句執(zhí)行之前
    • 在函數(shù)返回值已拷貝給調(diào)用者之后但在該函數(shù)之外的代碼執(zhí)行之前
    • 每個基類和成員初始化之后

    在標(biāo)準(zhǔn)中規(guī)定:在兩個順序點(diǎn)之間,一個數(shù)值對象最多只能由表達(dá)式賦值修改一次。而對于其他的行為不給予明確定義。

    int i = 3;
    int k=(++i)+(++i)+(++i);//各個編譯器處理方法不同, gcc:16, 18(vc)
    
  • 邏輯運(yùn)算符的另一種表示

    and、or、not:C++中的保留字;不是C語言的保留字(include頭文件iso646.h,可將它們用作運(yùn)算符)

    運(yùn)算符 另一種表示
    && and

| || | or |
| ! | not |

參考: C/C++順序點(diǎn)

字符函數(shù)庫cctype

include <cctype>

函數(shù)名 返回值
isalnum() 如果參數(shù)是字母or數(shù)字,返回true
isalpha() 如果參數(shù)是字母,返回true
iscntrl() 如果參數(shù)是控制字符,返回true
isdigit() 如果參數(shù)是數(shù)字(0-9),返回true
isgraph() 如果參數(shù)是除空格之外的打印字符,返回true
islower() 如果參數(shù)是小寫字母,返回true
isprint() 如果參數(shù)是打印字符(包括空格),返回true
ispunct() 如果參數(shù)是標(biāo)點(diǎn)符號,返回true
isspace() 如果參數(shù)是標(biāo)準(zhǔn)空白字符,返回true
isupper() 如果參數(shù)是大寫字母,返回true
isxdigit() 如果參數(shù)是十六進(jìn)制數(shù),即0-9、a-f、A-F,返回true
tolower() 如果參數(shù)是大寫字符,則返回其小寫,否則返回該參數(shù)
toupper() 如果參數(shù)是小寫字符,則返回其大寫,否則返回該參數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容