C语言入门

目录

一、基本数据类型

1、整数类型:不包含小数点的数据,如1,99, 555等

2、浮点类型:用于保存小数

3、字符类型:保存字符

二、变量的创建与使用

1、变量的使用

2、基本运算

三、格式控制符

四、定义常量

五、无符号数

六、类型转换

 七、基本运算符

八、位运算符

九、逻辑运算符

一、基本数据类型

1、整数类型:不包含小数点的数据,如1,99, 555等

int  -  占用4个字节,32个bit位

long  -  占用8个字节, 64个bit位

short  -  占用2个字节, 16个bit位

2、浮点类型:用于保存小数

float  -  单精度浮点,占用4个字节, 32个bit位

double  -  双精度浮点, 占用8个字节, 64个bit位

3、字符类型:保存字符

char  - 占用1个字节 表示所有的ASCII码字符

ASCII自行查询

转义字符:常见的有

\n  换行
\r  回车

二、变量的创建与使用

1、变量的使用

声明一个整数类型的变量。注:不能重复使用;只能包含英文字母或下划线、数字,严格区分大小写;不能以数字开头;不能是关键字

int a = 10;

int a = 10, b = 20;

2、基本运算

#include 

int main() {
    int a = 10, b = 20;
    int c = a + b;
    printf("c的结果是:%d", c);
    return 0
}

%d表示一个整数类型的数据(占位符), 在打印时会自动将c的值替换

三、格式控制符

%c   输出一个单一的字符

%hd %d %ld   以十进制、有符号的形式输出short、int、long类型的整数

%ho %o %lo   以八进制、不带前缀、无符号的形式输出short、int、long类型的整数

%hx %x %lx
%hX %X %lX   以十六进制、不带前缀、无符号的形式输出short、int、long类型的整数,如果x小写,那么输出的十六进制数字也小写;如果X大写,那么输出的十六进制数字也大写

%f %lf   以十进制的形式输出float、double类型的小数

%s   输出一个字符串
#include 

int main() {
    double a = 0.5;
    float f = 0.5f;
    double k = a * f;
    printf("f=%f\na = %lf\nk = %.2lf", f, a, k);
    return 0 
}

其中,%.2lf表示保留两位小数

四、定义常量

const关键字

#include 

int main() {
    const int a = 10;
    printf("%d", a);
}

五、无符号数

考虑符号表示范围:-128~127

不考虑符号:0~255

int main(){
    unsigned char c = -65;
    printf("%u", c);  //%u以无符号形式输出十进制
}

char类型占据一个字节,8个bit位

00000000  →  现在赋值-65  →  -65的补码形式  →  10111111

由于现在没有符号位,一律都是正数,所以,10111111 = 128 + 32 + 16 + 8 + 4 + 2 + 1 = 191

六、类型转换

 自动类型转换

int main() {
    short s = 10;
    int i = s;
}

注意转换类型的最大值,如下

int main() {
    int a = 511;
    char b = a;
    printf("%d", b);
}


//结果为-1

511 = int → 00000000 00000000 00000001 11111111

char →  11111111  →  -1

char和 short都是先转换为int再计算

强制类型转换

int main () {
    double d = 10.5;
    int a = (int) (d + 2.8);
    printf("%d", a);
}

 七、基本运算符

int main() {
    int a = 10, b = 5;
    printf("%d", a + b);
}

运算优先级

先括号再乘除再加减

自增自减运算符

int a = 10;
++a;

++a等价于int a = 10

 ++a在此处也可以写成a++

# include
int main() {
    int a = 10;
    int b = a++;
    printf("%d", b);
}

此时b输出为10

注:自增运算符++在前,先自增再出结果;++在后,先出结果再自增

--a;
a %= 3;
a /= 3;
a *= 2;

同理

八、位运算符

#include
int main() {
    int a = 10;
    a = a << 1;  // a <<= 1
    printf("%d", a);
}

<<表示让所有的bit位进行左移操作

10 = 00001010  bit位上的数据左移一位  00010100 = 20

左移一位就乘2

a >>= 1;

右移则除以2

按位与操作

#include
int main() {
    int a = 6, b = 4;
    int c = a & b;
    printf("c = %d", c);

}

4 = 00000100

6 = 00000110

4 = 00000100

让两个数的每一位进行比较,如果两个数对应的bit位都是1,那么结果的对应bit位上就是1, 其他情况一律为0

故计算结果为  4 = 00000100

按位或运算

int a = 6, b = 4;
int c = a | b;

4 = 00000100

6 = 00000110

让两个数的每一位进行比较,如果两个数对应的bit位其中一个是1,那么结果的对应bit位上就是1, 其他情况一律为0

九、逻辑运算符

#include
int main() {
    int a = 10;
    _Bool c = a < 0;
    printf("c = %d", c);    
}

判断a是否小于0,是则返回1,否则返回0

#include
int main() {
    char c = 'D';
    printf("c是否为大写字母:%d", c >= 'A' && C <= 'Z');

}

判断c是否为大写字母

#include
int main() {
    char c = 'D';
    printf("c是否不为大写字母:%d", c >= 'A' || C <= 'Z');

}

判断c是否不为大写字母

#include
int main() {
    char c = 'D';
    printf("c是否为A:%d", c == 'A');
}

判断c是否为A

#include
int main() {
    char c = 'D';
    printf("c是否为A:%d", c != 'A');
}

判断c是否不为A

三目运算符

#include
int main() {
    int i = 0;
    char c = i > 10 ? 'A' : 'B';
    printf("%d", c);
}

符合则返回前者,否则返回后者

你可能感兴趣的:(数据结构与算法,c语言)