让你提前认识软件开发(5):重定义一些基本数据类型

简介: 第1部分 重新认识C语言重定义一些基本数据类型         在编写程序的时候,定义变量是必不可少的,这时就要用到一些基本数据类型。        也许你会说,定义一个变量有什么困难的,这是很容易办到的。

第1部分 重新认识C语言

重定义一些基本数据类型

 

        在编写程序的时候,定义变量是必不可少的,这时就要用到一些基本数据类型。

        也许你会说,定义一个变量有什么困难的,这是很容易办到的。要定义整型变量,直接用“int i;”语句就可以了;要定义字符型变量,直接用“char c;”就可以了。确实,这是学校教育教给我们的,但在实际工作中却不能这样做。

        为什么呢?原因很简单,因为这样写出来的程序,看起来很“山寨”,不是专业的程序员应该做的事情。

        前段时间,我在看《楚汉传奇》,有一个场面给我留下了非常深刻的印象。当刘邦第一次去找项羽帮忙的时候,他们一行人看到了项羽军营是如何练兵的,想到自己练兵的方法,当时就震惊了。刘邦他们完全就像是一群没有规范、到处乱跑的农民,与项家军比起来,真是差得太远了。这种差别移植到软件开发上来,就是“山寨”与“专业”的差别。这个比喻虽然有点不恰当,当也说明了一定的道理。

       书本上学的基本数据类型就像是不懂事的小孩,只有对之进行一定的规范和训练,才能走出社会,才能为单位所用。

       根据自己的工作经验,常用到的一些基本数据类型的重定义(规范化)如下:

       (1)整型

       整型,以占数据位数来分包括了短整型(short int)、整型(int)和长整型(long int),以有无符号来分包括了无符号整型(unsigned)和有符号整型(signed)

       对于无符号短整型,其重定义为:typedef unsigned short int UINT16;

       对于有符号短整型,其重定义为:typedef signed   short int INT16;

       对于无符号整型,其重定义为:typedef unsigned int UINT32;

       对于有符号整型,其重定义为:typedef signed  int INT32;

       对于无符号长整型,其重定义为:typedef unsigned long ULONG;

       对于有符号长整型,其重定义为:typedef signed  long LONG;

       通过以上重定义之后,我们就可以用UINT16INT16UINT32INT32ULONGLONG来代替相应的整型类型了。这里拿UINT32来说明:“U”代表“unsigned”,“INT”代表“int”,“32”表示“32位”,从这个定义一眼就可以看出这表示32位的无符号整型数据类型,如果要定义一个这样的一个变量i,用“UINT32 i;”语句就可以了。

 

        (2)字符型

       由于字符型和整型可以相互转换,也可以用类似的办法来重定义。

       对于无符号字符型,其重定义为:typedef unsigned char UINT8;

       对于有符号字符型,其重定义为:typedef signed char INT8;

       由于一个字符型变量占据一个字节,因此可以用8位来表示。通过我们的重定义,也能够很清楚地看出来。如果要定义一个无符号字符型变量c,用“UINT8 c;”语句就可以了。

 

        一般说来,实际项目中,这两种数据类型用得比较多,其它数据类型的重定义也可以参照完成。

        对基本数据类型进行重定义也就是在进行代码编写的规范化。在大型代码文件中,按照这个规范编写的程序阅读起来比较方便,同时也易于理解,提高了工作效率,让人一看到就觉得十分的专业。另外,这样做也会提升开发工程师在客户心中的地位,能够获得他们比较好的评价。

        当然,文章中的重定义符号(INT16)只是作者的举例,各个公司有不同的喜好和规定,因此会有不同的表示方法。但是,大家的目的都是一样的:体现规范性和专业性。

        规范性是我们随时都要注意的事情,要在自己编写的每一行代码中体现出来。我们要不断努力,力争早日远离“山寨”。

 

 

 

(欢迎访问南邮BBS:http://bbs.njupt.edu.cn/)
(欢迎访问重邮BBS:
http://bbs.cqupt.edu.cn/nForum/index)

(本系列文章每周更新两篇,敬请期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

 

目录
相关文章
|
7月前
|
编译器 C++
C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)
C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)
62 1
|
6月前
|
运维
开发与运维函数问题之自定义拷贝构造函数和拷贝赋值运算符如何解决
开发与运维函数问题之自定义拷贝构造函数和拷贝赋值运算符如何解决
45 9
|
6月前
|
编译器 运维
开发与运维函数问题之声明一个简单的函数模板,函数模板工作如何解决
开发与运维函数问题之声明一个简单的函数模板,函数模板工作如何解决
31 5
|
8月前
|
设计模式 Rust Java
【一起学Rust | 设计模式】习惯语法——默认特质、集合智能指针、析构函数
【一起学Rust | 设计模式】习惯语法——默认特质、集合智能指针、析构函数
108 0
|
8月前
|
开发框架 安全 编译器
【C/C++ 深入探讨构函数】C++ 编译器在什么情况下无法生成默认的析构函数?
【C/C++ 深入探讨构函数】C++ 编译器在什么情况下无法生成默认的析构函数?
173 1
|
8月前
|
存储 安全 编译器
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
371 0
|
C#
艾伟:手工打造运算符重载过程
除了J#外,所有微软支持的.NET开发语言现在均支持运算符重载,因此纯粹为C#简化写法一样特性现已成为一种.NET开发中值得研究的一项重要语言特性。有人认为运算符重载其实就是简化写法,满足模拟基本类型操作的小功能,没有必要深究。
1240 0
C#8.0可空引用类型的使用注意要点
C#8.0可空引用类型的使用注意要点最近VS2019正式版发布了,装下来顺便试用了一下C#8.0,最大的看点应该就是可空引用类型了。不过C#8.0仍然处于Beta的状态,而且试用时也遇到了几个坑。 背景知识说明: 所谓的可空引用类型是指,一旦启用了可空引用类型这个新特征,引用类型将默认被视为不可空,无法赋予null,除非手工将它设为可空引用类型。
886 0

热门文章

最新文章