记中兴软件园一个月实训(一)

  马上大四了,在学期末学校一年一度的企业实训体验开始了。

其实现在已经接近尾声,只是把学到的东西整理一下,供各位君闲聊查看。

/**********这个是第一天的笔记*************************/

/*
一:程序的结构
工程 sln
文件 .c 文件包括:函数的定义 变量的定义
.h 文件包括:存放声明 类型的定义 宏定义

函数:
主函数
子函数
语句
单词 字母数字下划线 开头不能是数字
二:
数据类型 --->size 范围
分类:
1.基本类型
整形 有符号 无符号
实型
字符型 :unsigned char [全0~~~全1]
char [~~~0+全1] 1 0000000 当看到这种情况 1即看作符号位 又看作数字位
这里特别注意当溢出的时候:

/////////2016.05.26日修改////////////////////////////////

(当溢出的时候都是把最前面的1看做符号与数字)(这句话错误)

当溢出时,只有1000 0000 这种情况可以把开头的“1”,即看做符号位,又看做数字位。

其他情况都是只看做符号位:

例子如下:

在这个例子中,char型溢出了,但是输出确是-128

可以这样理解:这里的1既是符号位,又是数字位

当我打印129时,你猜会出现什么情况?

为啥是-127呢?

让我一点点分析:

129,用二进制表示为 1000 0001

可是这种表示在char,有符号中表示 -1 ,数字在计算机中都是以补码形式表示的,因此:

原串:1000 0001

取反:1111 1110

加一:1111 1111   转成十进制:-127

所以 130,转成以后是-126

131,转成以后是-125

…………

09:54补充 无符号类型unsigned char类型溢出处理办法:

8 bit的无符号类型unsigned char能表示0 至 255 之间的值,因此,如果你赋予了超过这个区间的值时,实际结果是该值对256取模所得的余数。

因此,当你把-1赋给8 bit大小的unsigned char时,所得的结果是255.

下边分析:

-1的二进制:1000 0001

取反     :1111 1110

加一     :1111 1111  -1的补码,转成无符号:255

255 % 256 余数 255

因此打印出255

更深层次的现在还分析不出来,看C++ Primer有感

上午09:34 于广州

可能有错误,有的话希望可以指正

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


常量:用一对单引号括起来的叫做字符常量 ‘1’
short int b = 0; 2Byte -2^15~~2^15-1
int c = 0; 4Byte -2^31~~2^31-1
long d = 0; 4Byte -2^31~~2^31-1
long long ll = 0;8Byte -2^63~~2^63-1

unsigned short int usi = 0U; 2Byte(0~~2^16-1)
unsigned int ui = 0U; 4Byte(0~~2^32-1)
unsigned long int uil = 0UL; 4Byte(0~~2^32-1)
unsigned long long int ulli = 0; 8Byte(0~~2^64-1)

float f = 0.F; 4Byte
double d = 0; 8Byte
long double ld = 0; 8Byte

2.构造类型
结构体
共同体结构
指针类型
空类型 void
二:常亮及变量
2_1
1、 变量要占据内存 内存的大小由“数据类型决定”
2、 变量的内存是有名字的,名字就是变量名
3、 变量的内存是可读可写的
2_2
1、常亮也是要占据内存的,内存的大小由数据类型决定
2、常亮的内存是只读的,不可以写
3、字符串常亮是用双引号引起来的字符
然而:“China"长度是0 但是占据了7个字节的内存
字符串的长度:从左到右计数,遇到第一个''截止
字符串的尺寸:字符串占据的字节数
“China”5个长度 6个字节
"usa" 0个长度 5个字节
4、字符常亮 用单引号引起来的一个字符 'a' 'b'
分类:' ' ' ' 字符转义
'ddd' 'xff' 数值转义
小细节:'ddd' (0~~~377) 不会是777 已经超出
'ff' (x0~~~xff)
"12345abc" 占用字节数8个
长度是7个
"378"已经超出 所以 3个/2个
x0abcd = x0a b c d
三:函数
作用域:名字的使用范围
在同一个作用域内不能出现相同的标示符
名字只能在作用域内使用
作用域采用就近原则
作用域的分类
1、文件作用域
2、函数作用域
3、语句块作用域
int g_count = 0; global的意思
int g_foo = 0;

nCount = 0;
nFir = 0;
3_4 作用域扩展
只能扩展文件作用域内的名字 不能扩展作用域之外的名字
局部作用域不能扩展

静态变量在编译时确定执行

3_5 递归调用 自己调用自己
要写好终止条件 终止条件放在递归之前
递归会频繁开辟释放内存,影响效率

3_6 字符串存放的是首字母地址 不管作参数还是变量
char str[] = "I Love You";//两个字符串,一个在数组中 一个在常亮中 地址不一样
char *p = "You Love me";//只读,不可写

原文地址:https://www.cnblogs.com/ccccnzb/p/4634646.html