字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串内容
\t:水平制表符
\':转义字符 比如 ‘’‘-->’\‘’打印出来是‘ ’
注:转义字符不计入字符长度
strlen("c:\test\32\test.c") 字符串长度为:13
只要是整数内存里存的都是二进制的补码
正数--原码,反码,补码相同
负数的原码:直接按照正负写出的二进制序列
反码:原码的符号位不变其他位按位取反得到
补码:反码+1
-2:用int类型占4个字节,共32bit
原码:1000000000000000000000000010 因为负数所以第一个数直接变1,为正则是0
反码:11111111111111111111111111111101
补码:11111111111111111111111111111110
计算机 存储数据 访问速度依次是:
寄存器
高速缓存
内存
硬盘
关键字:
int 定义的变量是有符号的 =signed int
unsigned:定义的变量是无符号的始终为正值
struct:结构体
union:共用体
typedef:类型定义-类型重定义
typedef unsigned int u int;
u int num1=20; // unsigned int num1 =20
static (静态变量) 修饰局部变量,局部变量生命周期变长
修饰全局变量,
extern-声明外部符号
extern int g_val;
printf("g_val=%d\n",g_val);
static:
1.修饰局部变量
2.修饰全局变量
3.修饰函数
修饰局部变量
#include<stdio.h>
void test(){
int a=1;
a++;
printf("%d",a);
}
int main(){
int i=0;
while(i<10){
test();
i++;
}
return 0;
}
打印结果为10个2
#include<stdio.h>
void test(){
static int a=1;//static修饰,用来存放int类型的变量,函数执行完毕之后不会释放空间。
a++;
printf("%d",a);
}
int main(){
int i=0;
while(i<10){
test();
i++;
}
return 0;
}
//直到程序完全结束后static静态区的静态变量才可释放
打印结果为234567891011
修饰全局变量
static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他源文件(.c)就不能再使用到这个全局变量
修饰函数
一个函数本来是具有外部链接属性的,但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就无法使用了
define定义标识符常量
#define NUM 100
#define定义宏
//宏是有参数
#define ADD(x,y) ((x)+(y)) //x,y是宏参数,(x)+(y)宏体
int Add(int x,int y)
{
}