今天学习的内容内容比较多,为了节省十日,提高效率,di代码采用截图fa方式呈现,这样更直观,更明了,下面是jin'今天所学内容:
数据类型(32位操作系统中)
int 4个字节 32位(一个字节8位)
float 4个字节 ~
double 8个字节 ~
char 1个字节 ~
enum 枚举型(可能不占字节,系统运行错误)
求关键字长度 vim sizeof.c
运行后得出:
内存:以字节为单位,每一个字节都拥有一个地址,一个地址8位。
无符号(unsigned)都是正数 有符号(signed):-~+.
signed char 8位 -128~127(有符号的可以省略不写signed)
unsigned char 8位 0~255
signed short 16位 -32768~32767
unsigned short 16位 0~65535
char int 默认有类型转换
vim strlen.c
运行后:
从此程序中可以看出,strlen遇到\0时结束,\0是字符串结束标志,从第二段代码看出,\0不占用字节,从第三段代码可以看出,da当遇到0则自动结束。
如下程序:
运行程序:
代码太多了。。。不一一罗列了,
C语言中const:修饰只读变量
const int a; 不能通过变量a 修改对应内存的值
比如将 int a=1;修改成 const int a=1 会报错。因为其为只读变量,不可以修改。
拿变量a举例,进入其内存的方式有两种,一种是通过变量名a,另一种是通过其地址进入内存,所以当其被const修饰时,可以通过(指针)去修改a对应的值。
volatile:防止编译时被优化
比如 int a;
a=0;
a=1;da当执行此程序时,会先zhi'执行a=0;再执行a=1,则上一条就被优化了。
ASCLL数值
范围:0-255
"\0“为转义字符
”\n"换行
”\t"水平制表(制作一个空格键)
所有字符串都有\0,”a"占两个字节
char str[5] = "CHINA" 会出错,因为其占6个字节,隐藏了一个\0。
强制类型转换:
const int b=1
int *p=&b (对其进行强制强制类型转换)———int *p= (int *) &b
运算符部分
%c: 字符
%s:字符串
%d 有符号整形
%u 无符号整形