操作符:
除法:/
int a = 9/2; //output:4
float a = 9/2;//output:4.0000
以上,因为9和2都是int,因此结果会强转成int
float a = 9.0/2;或者 float a = 9/2.0;
上述情况打印的是4.50
左移乘 右移除
数组长度计算
int main(){
int arr[10] = {0};
printf("长度是:%d \n" ,sizeof(arr)); //output: 40
printf("长度是:%d \n" ,sizeof(arr[0]));//output: 4
//计算数组元素个数
int sz = sizeof(arr)/sizeof(arr[-0]);//output: 10
printf("数组长度是 %d\n" ,sz);
}
整数在内存中存储的是补码
补码 = 反码 + 1;
示例代码如下:
int main(){
int a = 0;
printf("~ 的结果是 %d \n ",~a);//output:-1 反码+1 整数在内存中存储的一般是补码,正整数原码、反码、补码相同,负整数,原码与反码相反,补码= 反码+1
}
关键字:特点
1.C语言提供的,不可以自己创建
2.不能做变量名
特殊关键字
extern:用来声明外部变量的
register:寄存器关键字 一般频繁多次被使用的数据,可以存储在寄存器中,但不代表一定会被存储在寄存器中,最终由编译器决定
signed:有符号
unsigned:无符号
union:联合体
volatile:
typedef:别名
注意:define、include不是关键字,是预处理指令
static
修饰局部变量,改变了存储位置,由栈区转移到静态区
修饰全局变量,被修饰的全局变量只能在自己所在的源文件内部(.c)使用
全局变量被static修饰之后,就变成了内部链接属性,因此不能被其他源文件使用(必须具有外部链接属性才可被其他原文件使用)和java不同
修饰函数:作用类似于修饰全局变量
void test(){
static int a = 1;
a++;
printf("a = %d ",a);//output:2-11
}
int main(){
int i = 0;
while (i<10) {
test();
i++;
}
return 0;
}
内存存储表示图:
区域名 | 存储变量类型 |
栈 | 局部变量、函数的参数 |
堆 | 动态内存分配 |
静态 | 全局变量、static修饰的静态变量 |