3358 see.xidian.edu.cn/CPP/html/437.html
一、数据类型和“类型”
短、整型、长整型、字符、浮点型和双精度型六个关键字表示c语言的六种基本数据类型。
怎么理解呢? 举个例子,你见过藕豆炭的那个东西吧? 没见过吗? 你总见过煤球吧)。 它叫藕煤器,拿着它在一堆好煤球里发出这么咔嗒咔嗒的煤球。 半径12cm,12个孔。 根据尺寸的不同,莲藕炭器滴沥出来的煤球大小也不同,孔的数量也不同。 这个藕炭器其实是模子。
现在,我会联想到short、int、long、char、float、double这六个东东是不是和不同类型的莲藕炭器很像。 拿着它们咔嗒咔嗒的内存会分配不同大小的内存。 当然,别忘了给它取个好名字。
在32位系统中,short输出的内存大小为2个字节;
int输出的内存大小为4个字节;
long喀嚓一声出现的内存大小为4个字节;
float咔嗒一声输出的存储器大小为4个字节;
double喀嚓一声弹出的内存大小为8个字节;
char喀嚓一声出现的内存大小为字节。
(请注意,这里指的是一般情况,可能因平台而异。 具体平台请用sizeof关键字测试一下)
很简单吧? 咔嗒咔嗒很爽吧? 很简单,确实很爽,但问题是你咔嚓一下说出这么多内存块,你不能给他起名叫x1、x2、x3、x4、x5…或者长江1号、长江2号…吧。 这些如此相似。 (你家老板,老二,xndjz…)。 过了一会儿,你就会忘记哪个名字和哪个内存块匹配。 )到底是谁和谁结婚的呢? ^_^ )。 所以,给他们取个好名字绝对重要。 让我们讨论一下该起什么名字。
二、变量命名约定
1、命名可以直观拼写,有望了解文意,便于记忆和阅读。
标识符最好采用英语单词或其组合,不能使用拼音。 程序中的英语单词一般不太复杂,必须正确使用。
2、命名长度必须符合“最小长度最大信息”原则。
C是一种简洁的语言,命名也必须简洁。 例如,变量名MaxVal比MaxValueUntilOverflow更容易使用。 标识符的长度一般不要长。 长单词可以通过去掉“元音”来缩写。
另外,尽量不要省略英语单词。 不是特别常用的专业名词。 如果有缩写,则必须在同一系统中对同一单词使用相同的标记法并注明其含义。
3、当标识符由多个单词组成时,每个单词的第一个字母是大写,其余都是小写。 例如:
int CurrentVal;
这样的名字看起来比较清楚,比长字符串好得多。
4、除非逻辑上需要号码,如Value1、Value2等,否则名称中不要出现数字号码。 例如,如果在开发驱动程序时为管脚命名,则除了编号以外的名称反而不好。
初学者总是喜欢使用有编号的变量名或函数名,这个样子看起来简单方便,其实是定时炸弹。 这个习惯初学者一定要改掉。
5、建议对多个文件之间共同使用的全局变量或函数附加范围修饰符(模块名称,作为范围修饰符)。
(GUI_,etc )标识符命名约定:
6、标识符名称分为两部分:规范标识符前缀(后缀)语义标识。 非全局变量可以不使用范围修饰符前缀。
7、作用域前缀命名约定。
8、数据类型前缀命名约定。
9、语义标识命名约定,变量命名使用名词性短语,函数命名使用动词性短语。 例如:
语义标识符的构成:宾语动词(的过去分词);状语) ) (目的地);
语义标识符的构成:动词(一般现在)宾语(状语) (目的地);
10、程序中不能出现只区分大小写的相似标识符。 例如:
int x,x; 变量x和x容易混淆
语音福克斯(intx ); 函数foo和foo容易混淆
语音福克斯(Floatx );
此处需要注意的另一点是,1 (数字1 )和l (小写字母l )之间的差异,0 )数字0 )和o (小写字母o )之间的差异。 这两组真的很难区分。 我曾经的同事被这个问题折腾了一次。
11、禁止一个函数名用于其他地方。 例如:
#include ‘c_standards.h ‘
voidfoo(intp_1) )。
{
int x=p_1;
}
Void静态_ p (Void )
{
int foo=1u;
}
12、宏定义、枚举常量、只读变量均以大写字母命名,下划线分割单词。 例如:
常数int max _ length=100; //这不是常数,而是只读变量。 具体请稍后再看
#define FILE_PATH “/usr/tmp”
13、考虑到习惯性问题,局部变量可以采用通用命名方式,仅限于作为n、I、j等循环变量使用。
请不要写以下代码。
int p;
char i;
int c;
char * a;
一般而言,习惯上用n、m、I、j、k等表示int型变量; 表示c、ch等字符类型的变量; a等表示序列; p等表示指针。 当然,这是常见的习惯,除了I、j、k等可以用来表示循环变量外,尽量不要使用其他字符变量名称。
14、定义变量的同时,不要忘记初始化。 定义变量时编译器不一定清空了此内存,其值可能是无效数据。 这个问题在内存管理一章中讨论得非常详细,请参阅。
15、不同类型数据之间的运算要注意精度扩展的问题,一般低精度数据可以扩展到高精度数据。