1. 程式人生 > >學習Linux C程式設計 strlen及unsigned問題

學習Linux C程式設計 strlen及unsigned問題

strlen

用法:#include <string.h>

功能:計算字串s的(unsigned int型)長度

說明:返回s的長度,不包括結束符NULL。

注意點遇到\0終止,例如:

int a[1000]={0,1};

printf("%d",strlen(a[0]));

輸出為0,因為是\0

unsigned

直接舉例:

#include <stdio.h>

int main()

{

    unsigned int a=3;

unsignedint b;

    b = a*(-1);

    printf("%u", a );

    return

 0;

}

b的值不為-3而為4294967287。為什麼呢?其實很簡單,例如b=-1在計算機中的資料位是1111111 11111111 11111111 11111111,注意是資料位,是要去掉符號位的,所以是31位,a是無符號型別的整數,將b賦給a,自然a就是1111111 11111111 11111111 11111111,也是31位第一位補0,轉換成十進位制就是4294967287,它也是unsigned int範圍的最大上限(0~4294967288-1),-1是最大的負整數轉換成正整數當然也是最大了,這個應該很好理解了。