isdigit(c) - 輸入變數應該是什麼資料型態?
簡介:
何時使用基於字元的輸入時,確定給定輸入是否是數字至關重要。 isdigit() 函數是用於此目的的常用工具,但它提出了一個問題:輸入變數應該是字元 (char) 還是整數 (int)?
字元輸入和流State:
Cin 用於讀取字元輸入。但是,在使用輸入之前檢查流是否有效至關重要。如果流關閉,cin 可能會返回而不修改輸入變量,使其處於未初始化狀態。
isdigit() 合約與實作:
C 函數 isdigit() 需要一個整數爭論。這種設計源自於原始的 C 函數 getchar(),它會傳回一個 int 來指示字元程式碼和錯誤狀態。因此,isdigit() 假定輸入是一個 unsigned char 轉換為 int。
Char 的符號性:
在 C 中,普通 char 可以是有符號的,也可以是無符號的,取決於關於編譯器的實作。在大多數情況下,它是簽署的。這在使用 getchar() 和 isdigit() 系列函數時引入了相容性問題。
signed char 中的負值可能與 EOF 指示符值衝突,導致潛在的重疊和未定義的行為。為了避免這種情況,應該呼叫 isdigit(),並將輸入強制轉換為(無符號字元)。
程式碼範例:
<code class="c++">#include <iostream> #include <ctype.h> int main() { char c; cout << "Please enter a digit: "; cin >> c; if (isdigit((unsigned char)c)) cout << "You entered a digit" << endl; else cout << "You entered a non-digit value" << endl; return 0; }</code>
以上是`isdigit(c)` 是為 `char` 或 `int` 輸入設計的嗎?詳細檢查。的詳細內容。更多資訊請關注PHP中文網其他相關文章!