變量類型:int - 4字節(1字節=8bit)
short -2字節
float -4字節
double -8字節
char -1字節
(任意類型)* - 4字節
#include"stdio.h" 在計算機中變量以補碼方式存在 而正數原碼=補碼;負數補碼=原碼取反+1;負數原碼=補碼取反+1(計算機只計算加法)
#include"string.h" 以左圖爲例 strlen(a)遇到 ‘0’時停止計算字符串長度 而數字 0 ASCII碼即‘0’;
int main() char 1個字節=8bit 所以 0的補碼爲0000 0000 -1的補碼爲 1 111 1111(第一個1 爲符號位 代表負數)
{ i = -1 + (-a[i]) a[i] = 0 所以 i = 1111 1111 (注意 i 一定是正數 而正數的原碼=補碼)所以 i=255.
char a[1000]; strlen 計算到a[254] ,a[255]不計算入內 所以長度爲255(別忘記a[0])
int i; 這是計算有符號位的 那麼無符號位呢?同樣也是255
這時候char的範圍爲0~255 (有符號的是-128~127)
for(i=0;i<1000;i++) 這時候注意有符號數和無符號數進行比較運算時 有符號數隱式轉換成無符號數;
{ 所以答案同樣是255 。
a[i]=-1-i;
}
printf("%d",strlen(a));
return 0;
}