[問題] char* 比值
我寫了一個小程式
#include <stdio.h>
int main() {
char* a = (char*)-1;
printf("%d\n", (a < (char*) 0));
printf("%d\n", (a <= (char*) -1));
return 0;
}
意外得到結果是 0 1
一個變數居然 小於等於 -1 卻 不小於 0 !!!
原本猜測是有些平台上 char 會是 signed 有些是 unsigned
於是把 char 都改成 signed char,結果還是一樣...
因為有些 unistd 的東西 error 時會回傳 -1,所以會需要這樣判斷
這樣做到底問題在哪@@?? 我要怎麼寫才能保證各平台行為一致?(不會是未定義行為)
謝謝
--
光明 的背後 是 黑暗
黑暗 的背後 還是 黑暗
由此可知 黑暗 > 光明 Q.E.D.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.230.123
→
11/04 22:59, , 1F
11/04 22:59, 1F
→
11/04 23:06, , 2F
11/04 23:06, 2F
像是 <sys/shm.h> 裡的 shmat() 當有 error 發生時會回傳 (void*)-1
但我不知道要怎麼判斷比較好@@...
※ 編輯: darkgerm 來自: 140.113.230.123 (11/04 23:15)
推
11/04 23:21, , 3F
11/04 23:21, 3F
→
11/04 23:24, , 4F
11/04 23:24, 4F
→
11/04 23:28, , 5F
11/04 23:28, 5F
→
11/04 23:29, , 6F
11/04 23:29, 6F
→
11/04 23:31, , 7F
11/04 23:31, 7F
→
11/04 23:32, , 8F
11/04 23:32, 8F
→
11/05 01:40, , 9F
11/05 01:40, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章