linux kernel 自由博客kernelchina.blog.chinaunix.net
bob_zhang2004
在外企做服务器开发, 目前是项目经理, 管理两个server开发的项目。不做嵌入式好久了。
全部博文(197)
开心故事(1)
ia64 开发(1)
linux kernel 研(16)
linux kernel读码(23)
linux driver(5)
kernel新手培训(15)
一些研究(9)
进程间通信(6)
Apache(2)
MySQL(3)
2011年(2)
2010年(6)
2009年(18)
2008年(30)
2007年(100)
2006年(41)
send_lin
hongjiuj
any_wind
tekkaman
浪花小雨
Pierkaso
yunxulan
塑料袋
11937341
ycjttttt
buptdrea
frlhao
hbzjf
分类: LINUX
2007-11-15 12:57:12
#include <stdio.h>#include <stdlib.h>#define INT_MAX ((int)(~0U>>1))#define INT_MIN (-INT_MAX - 1)#define UINT_MAX (~0U)#define LONG_MAX ((long)(~0UL>>1))#define LONG_MIN (-LONG_MAX - 1)#define ULONG_MAX (~0UL)#define LLONG_MAX ((long long)(~0ULL>>1))#define LLONG_MIN (-LLONG_MAX - 1)#define ULLONG_MAX (~0ULL)int main(void){ unsigned long long ll1 = 0; unsigned int ii = 0; unsigned char cc = 0; unsigned char mul = 2; //ii = (1<<32)-1; //ii = 4294967295; ii = (~0U); printf("ii=%u\n",ii); ll1 = (unsigned long long)ii * mul; //KERNEL 里面有一些很大的数 ,尤其要注意。 //ll1 = (unsigned long long)(ii * mul); //这个就是错误的, 溢出了。 自己试试,得到的value就是0 了。 //ll1 = (unsigned long long)(ii *2); //error ,overlow //ll = ii *2;//the same above cc = ii; //only get the low 8 bits printf("ll1=%llu\n",ll1); printf("cc=%u\n",cc); printf("cc=%hhu\n",cc); //the result is same to above printf("LONG_MAX=%ld, hex type=%#08lx\n",LONG_MAX,LONG_MAX); printf("ULONG_MAX=%lu , hex type=%#08lx\n",ULONG_MAX,ULONG_MAX); printf("ULLONG_MAX=%llu , hex type=%#08llx\n",ULLONG_MAX,ULLONG_MAX); return 0;}
上一篇:[最后布置给新人 watchdog的练习 ]
下一篇:【新人c语言强化训练 】 c 语言强化练习2。1 数据对齐
登录 注册