数据类型
1.数据类型
char //字符数据类型 —%c
short //短整型
int //整型 —%d
long //长整型 —%ld
long long //更长的整型
float //单精度浮点数 —%f
double //双精度浮点数 —%lf
sizeof()获取数据在内存中所占用的存储空间,以字节为单位来计数,一个字节=8个比特位。
常量和变量
1.变量
局部变量
定义在代码块({ })内部的变量,只能在定义的局部当中使用,并不是所有局部变量都放在main函数当中,放在main函数当中的变量是局部变量。
全局变量
定义在代码块({ })之外的变量,在哪里都能使用
当局部变量和全局变量的名字相同的时候,局部变量优先
C语言语法规定,变量要定义在当前代码块的最前面,否则可能会报错。
变量的作用域和生命周期
限定这个名字的可用性的代码范围就是这个名字的作用域
局部变量的作用域:变量所在的局部范围。
全局变量的作用域:整个工程。
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期是:整个程序的生命周期。
2.常量
C 语言中的常量分为以下以下几种:
① 字面常量
② const 修饰的常变量
③ #define 定义的标识符常量
④ 枚举常量
#include <stdio.h>
int main()
{
//①字面常量演示
3.14;//字面常量
1000;//字面常量
//②const-常属性
//const 修饰的常变量,使变量不能进行变值
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
// const int n = 10;
// int arr[n] = {0}; 出错!不可以这样使用
// const 修饰的常变量在C语言中只是在语法层面限制了变量,n不能直接被改变,但是n本质上还是一个变量的,所以叫常变量
//③#define的标识符常量演示
#define MAX 100
int arr[MAX] = {0};
printf("max = %d\n", MAX);
//④枚举常量演示 一一列举
//枚举关键字-enum
//举例:性别:男,女,保密
enum Sex //Sex是枚举类型
{
MALE,
FEMALE, //括号中的MALE,FEMALE,SECRET是枚举常量
SECRET
};
//enum Sex s = FEMALE;
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的。默认MALE是0,FEMALE是1,SECRET是2
//枚举常量不能更改,但是通过枚举类型创建出来的变量可以更改
return 0;
}
字符串,转义字符,注释,操作符
1.字符串
“hello bit.\n”
这种由双引号 引起来的一串字符称为字符串字面值 ,或者简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "bit";
char arr2[] = {'b', 'i', 't'};
char arr3[] = {'b', 'i', 't',0};
char arr4[] = {'b', 'i', 't','\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
printf("%s\n", arr4);
return 0;
}
//“abc”里包括'a' 'b' 'c' '\0'
//'\0'是字符串的结束标志,\0的ASCII值是0
#include<stdio.h>
#include<string.h>
int main(){
char arr1[] = "abc";
char arr2[] = {'a', 'b', 'c'};
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
return 0;
}
2.转义字符
3.注释
C 语言风格的注释 /xxxxxx/ 缺陷:不能嵌套注释
C++ 风格的注释 //xxxxxxxx 可以注释一行也可以注释多行
4.操作符
只要是整数,内存中存储的都是二进制的补码
正数的原码,反码,补码都相同
负数存的是补码
原码:直接是按照正负写出的二进制序列
反码:原码的符号位不变,其他位按位取反得到的
补码:反码+1