匈牙利命名法
规定了一整套关于函数、变量、面向对象等的命名规范。
变量的命名
局部变量,使用有意义的且有前缀区别类型。
int -n,i
unsigned -u
short -s
double -db, d
char -c, ch
long -l
char* -sz, str
例如:
int nValue = 0;
char chValue = '\0';
double dbValue = 0.0;
float fltValue = 0.0f;
char* szValue = NULL;
为了代码易读(’\0’,NULL),0.0f表示告诉编译器,这个数字是float类型的(默认是double类型)
复杂变量
用多个英文单词全拼组合,单词之间首字母大写。
int nIsEvenFlag = 0;
double dbTeacherSalary = 0.0;
double dbTeacherSalary = 0.0;
非局部变量
写在函数内部的为局部、写在外部的变量是全局变量。
全局变量
加“g_”前缀
g_nValue;
函数命名
除了没有类型前缀以外,和变量命名方式类似。
int IsEvenNumber(int nArg);
void GetUserInput();
补码知识
补码是约定。
所有的编码都是约定。例如:ASCII码就是约定。
补码解决负数在计算机内存中表示的问题。
VS中的内存窗口F10启动窗口
左侧灰色数字,表示内存地址:类似于门牌号码,可通过其找到房间。
内存窗口中,地址最小单位是字节
右侧黑色数字表示对应地址处所存储的值
大端方式和小端方式
大端方式和小端方式又称为大尾方式和小尾方式
运行以下代码
int main(int argc, char* argv[])
{
char chValue = 0x34;
int nValue = 0x12345678;
return 0;
}
在内存中的存储方式,顺序是
大端方式:数字的较低位,存放在内存地址的较高地址处
小端方式:数字的较低位,存放在内存地址的较低地址处
举例:对于: 0x12345678,从数字角度看,最低为是:8,但是,从计算机角度看,最小的单位是字节,所以,最低为应该是78。 而通过截图我们可以观察到,0x78出现在较低内存地址处,所以我们的电脑是小端方式。
补码编码方案
就是让所表达的东西和内存中的的数字的映射关系。
其在数值计算过程中,会引入麻烦
编码过程:
- 如果是一个正数,那么符号位为0,其他位存绝对值
- 如果是一个负数,对其绝对值【取反加1】
我们一下来举例(3 bit):
存1:001
存-1:111
正2:010
-2:110
在补码方案中,相反数相加等于0.
取反加1的推导
目标:
而同时:
在这个基础上,方程两边同时加1
在C语言中看补码
结合补码和小尾观察内存
int main(int argc, char* argv[])
{
char chValue = ‐2;
short sValue = ‐2;
int nValue = ‐2;
return 0;
}
观察代码,理解约定
int main(int argc, char* argv[])
{
int nValue1 = 0xFFFFFFFF;
int nValue2 = ‐1;
unsigned int nValue3 = 0xFFFFFFFF;
unsigned int nValue4 = ‐1;
printf("%d, %d\r\n", nValue1, nValue2);
printf("%d, %d\r\n", nValue3, nValue4);
printf("%d, %u\r\n", nValue1, nValue2);
return 0;
}
来源:CSDN
作者:未北、
链接:https://blog.csdn.net/weixin_43365952/article/details/103957687