isalpha()方法
是標準C 庫的一個例程,如果它的參數是一個英文字母,則返回值爲true。爲了使用它 程序員必須包含系統頭文件ctype.h
char ch;
if ( isalpha( ch ))
++consonantCnt;
關於switch 語句
聲明語句也可以被放在switch 語句的條件中 如下所示
as3中不成立
switch( int ival = get_response() )
ival 被初始化並且讀初始化值成爲與每個case 標籤作比較的值, ival 在整個switch 語句中是可見的,但在其外面並不可見。把一條聲明語句放在與case 或default 相關聯的語句中是非法的,除非它被放在一個語句塊中。例如 下列代碼將導致編譯時刻錯誤
case illegal_definition:
// 錯誤 :聲明語句必須被放在語句塊中
string file_name = get_file_name();
// ...
break;
如果一個定義沒有被包圍在一個語句塊中,那麼它在case 標籤之間是可見的,但是隻有當定義它的case 標籤被執行時,它才能被初始化。因此需要一個語句塊來保證名字是可見的,並且也只有這個語句塊才能夠使用它,而且可以保證它只在這個語句塊中才能被初始化 。
爲了使我們的程序能通過編譯 必須引入語句塊 重新實現case 標籤如下
case ok:
{
// ok: 聲明語句被放在語句塊中
string file_name = get_file_name();
// ...
break;
}
for語句
下面都是合法的condition 實例
(...; *st1++ = *st2++; ... )
(...; char ch = getNextChar(); ... )
在標準C++之前 定義在init-statement 中的對象的可視性可以擴展到for 循環包含的語句塊之外,例如 ,給定下面兩個for 循環 它們位於同一個語句塊之中
{
// 在標準C++中合法 但是在標準C++之前 ival 被定義兩次 所以不合法
for ( int ival = 0; ival < size; ++ival ) // ...
for ( int ival = size -1; ival >= 0; --ival ) // ...
}
as3與標準C++之前情況相同while 循環
condition 可以是表達式 如
bool quit = false;
// ...
while ( ! quit ) {
// ...
quit = do_something();
}
string word;
while ( cin >> word ) { ... }
或是初始化定義 如
while ( symbol *ptr = search( name )) {
// do something
}
*parray_begin++的理解方式
goto 語句
goto 語句提供了函數內部的無條件分支,它從goto 語句跳轉到同一函數內部某個位置的一個標號語句。在當前關於良好的程序設計實踐的看法中,它的用法被認爲是應該拋棄的。
goto 語句的語法形式如下
goto label;
這裏的label 是用戶定義的標識符 標號[ labe ] 。 語句只能用作goto 的目標 必須由冒號結束,且標號語句不能緊接在結束右花括號的前面。在標號語句後面加一個空語句 是處理這種限制的典型方法 例如
end: ; // 空語句
}
goto 語句不能向前跳過沒有被語句塊包圍的聲明語句 例如 下面的代碼將導致編譯時刻錯誤
int oops_in_error()
{
// mumble
goto end;
// 錯誤 : 跳過聲明語句
int ix = 10;
// ... code using ix
end: ;
}
正確的做法是把聲明語句以及使用該聲明的語句放在一個語句塊中,例如
int ok_its_fixed()
{
// mumble
goto end;
{
// ok: 在語句塊中聲明語句
int ix = 10;
// ... code using ix
}
end: ;
}