標籤:style blog color io 檔案 ar div log
1:編寫一個程式,確定分別由signed ,unsigned 限定的char short long int的取值範圍。採用列印標準標頭檔中的相應值以及直接計算兩種方式實現。
標頭檔的實現方式:
#include <stdio.h>#include <limits.h>/*determin range of int types*/int main(){ /*signed*/ printf("signed char min = %d\n",SCHAR_MIN); printf("signed char max = %d\n",SCHAR_MAX); printf("signed short min = %d\n",SHRT_MIN); printf("signed short max = %d\n",SHRT_MAX); printf("signed int min = %d\n",INT_MIN); printf("signed int max = %d\n",INT_MAX); printf("signed long min = %ld\n",LONG_MIN); printf("signed long max = %ld\n",LONG_MAX); /*unsigned*/ printf("signed char max=%u\n",UCHAR_MAX); printf("signed short max = %u\n",USHRT_MAX); printf("signed int max = %u\n",UINT_MAX); printf("signed long max = %lu\n",ULONG_MAX); getchar(); return 0;}
直接計算:
#include <stdio.h>/* ~0 取反 全部變成1(unsigned char)~0 變成無符號的(unsigned char)~0>>1 右移一位清除符號位(char)(unsigned char)~0>>1 轉化為char類型 */int main(){ /*singed*/ printf("min of singed char = %d\n",-(char)((unsigned char)~0>>1)); printf("max of singed char = %d\n",(char)((unsigned char)~0>>1)); printf("min of singed short = %d\n",-(short)((unsigned short)~0>>1)); printf("max of singed short = %d\n",(short)((unsigned short)~0>>1)); printf("min of singed int = %ld\n",-(int)((int long)~0>>1)); printf("max of singed int = %ld\n",(int)((int long)~0>>1)); printf("min of singed long = %ld\n",-(long)((unsigned long)~0>>1)); printf("max of singed long = %ld\n",(long)((unsigned long)~0>>1)); /*unsigned*/ printf("max of singed char = %u\n",(unsigned char)~0); printf("max of singed char = %u\n",(unsigned short)~0); printf("max of singed char = %u\n",(unsigned int)~0); printf("max of singed char = %lu\n",(unsigned long)~0); getchar(); return 0 ; }