数据类型 --uint32_t / uint64_t
来源:互联网 发布:jsp 是js吗 编辑:程序博客网 时间:2024/05/29 16:37
转载自:http://blog.sina.com.cn/s/blog_6aea878e0100tl0f.html
体会[2006-10-25]:
1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.
如:
a> 当某个数据不可能为负数时我们一定要考虑用以下类型:
unsigned char, unsigned int, uint32_t, size_t, uint64_t, unsignedlong int,
b> 当有些数据你不知道是正负时一定不要用"a>"中的类型,不然他永远也不可能为负.
c> 数据的边界值要多注意, 如:
uint32_t a,b, c;
uint64_t m;
m = a * b + c;
在该运算中可能出现错误, "a*b"的类型可能超过uint32_t的最大值,这时一定不要忘了类型转换.
m = ((uint64_t)a) * b + c;
2>. 在适当的时候要会自我定义数据类型.
我们都知道linuxC开发中的常见扩展数据类型的定义有:uint8_t, uint16_t, uint32_t, uint64_t, size_t,ssize_t, off_t .... 他之所以要自己定义出数据类型是有道理的, 如: typdef unsigned intuint32_t; 表示uint32_t为32位无符号类型数据, 其实size_t也是32位无符号数据类型,为什么不直接写"unsigned int"呢?
为了程序的可扩展性, 假如将来我们需要的数据大小变成了64bit时,我们只需要将typedef long longsize_t就可以了, 不然我们可要修改好多好多的地方了. 这种设计我们同样可以应用到自己的开发中来,当自己设计一个int类型保存某种数据时,但你又没把握将来是不是要用longint时你可以引用一个自己定义的数据类型的啊!
stdint.h
-----------------------------
typedef unsigned int uint32_t;
uint32_t.c
-----------------------------
体会[2006-10-25]:
1>. 在写程序时注意"无符号类型"的使用, 各种类型边界值的情况.
2>. 在适当的时候要会自我定义数据类型.
stdint.h
-----------------------------
typedef unsigned int
uint32_t.c
-----------------------------
#include <stdio.h>#if 0 #include<stdint.h> // uint32_t#endif typedef unsigned int uint32_t;typedef unsigned long long uint64_t; int main(){ uint32_t a; a = 12; printf("a = %x\n", a); printf("sizeof(a) = %d\n", sizeof(a)); uint64_t b; b = 12; printf("b = %x\n", b); printf("sizeof(b) = %d\n", sizeof(b));} a = csizeof(a) = 4b = csizeof(b) = 8
int main(){unsigned __int64 a ;printf("请输入a:");scanf("%I64u",&a);printf("a = %I64u\n",a);a = (unsigned __int64)1 << 60;printf("a = %I64u\n",a);a = 1 << 60;//由于没有转换类型,1移位造成越界变成了0printf("a = %I64u\n",a); return 0;}
#include<stdio.h>int main(){unsigned long long a = (unsigned long long)1 << 63;printf("%llu\n",a);return 0;}
- 数据类型 --uint32_t / uint64_t
- 数据类型 --uint32_t / uint64_t
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型
- 数据类型 uint8_t uint16_t uint32_t uint64_t
- uint8_t / uint16_t / uint32_t /uint64_t 数据类型
- uint8_t / uint16_t / uint32_t /uint64_t数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 -
- uint8_t/uint16_t/uint32_t/uint64_t 等是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
- 一周C++学习小结
- .NET 4.0 MEF 常见问题解答(Socket, Plug and extension)
- android intent隐式调用之一个应用程序启动另一个应用程序
- XML基础入门概要
- Asp.Net MVC2 实用入门系列:第六篇:拦截器
- 数据类型 --uint32_t / uint64_t
- 《iOS 上的 OpengGL ES 开发》(Learning OpenGL ES for iOS A Hands-on Guide to Modern 3D Graphics Programming
- ubantu10.10安装stardict
- 微软证实:Windows 9开发工作已经展开
- Android APK报错:java.io.IOException: Permission denied
- 展讯android LEDS模块分析----四大路径
- hdu 1541 树状数组简单
- 长程调度、中程调度、短程调度
- socket编程—— 服务器遇到Broken Pipe崩溃