[爆卦]Isdigit c是什麼?優點缺點精華區懶人包

為什麼這篇Isdigit c鄉民發文收入到精華區:因為在Isdigit c這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者allenlinli (allen)看板C_and_CPP標題[問題] C++的isdigit時...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++

問題(Question):
isdigit該如何使用呢?
http://www.cplusplus.com當中,是說 int isdigit ( int c );
可是我實際使用,它卻只有處理字元。我在其他地方查到的也是說處理字元。
為什麼呢? 是cplusplus寫錯了嗎?



預期的正確結果(Expected Output):
0
4

錯誤結果(Wrong Output):
4
0

程式碼(Code):(請善用置底文網頁, 記得排版)

#include <iostream>

using namespace std;
int main ()
{

cout<<isdigit('3')<<endl;
cout<<isdigit(3)<<endl;
system("pause");
return 0;
}

補充說明(Supplement):


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.184.73
※ 編輯: allenlinli 來自: 140.122.184.73 (08/30 23:24)
※ 編輯: allenlinli 來自: 140.122.184.73 (08/30 23:25)
james732:它判斷的是ASCII Code 08/30 23:26
james732:唔,這麼說好像怪怪的... 08/30 23:26
purpose:沒差吧,char 能放的 int 都能放 08/30 23:31
PkmX:4和0很正常不是嗎... 08/30 23:34
stonehomelaa:這有問題嗎?? 08/30 23:50
stonehomelaa:4 0 才對呀 不懂你的問題在哪 08/30 23:51
LPH66:你搞錯 isdigit 的意思了... 08/31 00:22
LPH66:所有在 <ctype.h> 裡的 is... 系列函式都是判斷某個字元 08/31 00:23
LPH66:'3' 當然是字元 所以判斷它是不是一個數字字元 08/31 00:23
LPH66:而 3 是一個數字 它到底是什麼字元是看 ASCII 08/31 00:24
james732:簡單的例子:http://pastie.org/2455317 08/31 01:00
Favonia:這函式的定義跟 ASCII 一點關係也沒有... C++ 有兩個 08/31 01:18
Favonia:isdigit 你用的是從 C 抄過來的 isdigit. C 的字元常數 08/31 01:23
Favonia:型態是 int 所以就這樣了。重複:不是所有電腦都用 ASCII 08/31 01:24
james732:我就知道提ASCII就一定會被F大或板主噹 XDD 08/31 01:24
Favonia:呃... 好啦我想這篇重點是為什麼是 int... lol 08/31 03:16
james732:其實我也不懂 int isdigit(char c); 哪裡不好? 08/31 03:42
purpose:整數比較快吧,回傳一個真偽值都用到4 Bytes塞成BOOL了 08/31 03:48
Favonia:我個人妄加猜測原 po 想問既然吃字元為什麼寫 int, 08/31 08:23
Favonia:希望我的答案(C 的歷史遺跡)有回答到 xDDD 08/31 08:24
angleevil:版主OS:james732,想再當版標嘛. 08/31 08:35
angleevil:int isdigit ( int c ) 意思是說你傳遞一個char進去判斷 08/31 08:43
angleevil:是不是數字的字元,然後"是"就回傳4,"不是"救回傳0 08/31 08:45
angleevil:但是在gcc,是以0,1當回傳值.Favonia應該是傳寫跨平台的 08/31 08:47
angleevil:人,不然不會那麼注意未定義行為和跨平台的細節問題 08/31 08:48
allenlinli:感謝各位大大 我從F大講的C歷史有比較懂一點^^ 08/31 14:57
allenlinli:我在cplusplus查到isdigit的確有C和C++的不同 而且在C 08/31 15:13
allenlinli:當中 連isalphau也是int isalpha ( int c ); 所以F大講 08/31 15:15
allenlinli:的沒錯 08/31 15:15
firejox:假如用char 那EOF與255就有差.... 08/31 19:55
firejox:用int才會有差別 08/31 19:55
firejox:假如用char 就沒辦法分別EOF 與255的值(更正樓上上) 08/31 19:56
Favonia:樓上講的是 C 標準一大罩門,實際上用 int 也不一定有差。 08/31 20:41
Favonia:EOF 雖然可以不是 -1 但 int 可能跟 char 一樣大,某些人 08/31 20:44
Favonia:想把 gcc 移植到某些機器上時就擔心過這問題 xD 08/31 20:46
tropical72:我以為是 char < short <= int <= long < long long.. 08/31 21:28
angleevil:...厄,我把char c看成int c了.我的眼睛越來越糟糕 08/31 21:39
Favonia:沒有。是 signed char 的範圍被包括在 int 的範圍,但是 08/31 21:45
Favonia:UCHAR_MAX 可能比 INT_MAX 大... 然後就好玩了 xDDD 08/31 21:46
Favonia:上面打錯,應該說有些人用移植過去的 gcc 時就擔心過這個. 08/31 21:49
Favonia:我上次找到有人舉 Motorola 96002 DSP 上的 gcc 當例子 08/31 21:50

你可能也想看看

搜尋相關網站