目录
数据类型、运算符与表达式
1.数据类型
基本数据类型包括
- 整数类型
- 基本整型(int)
- 短整型(short)
- 长整型(long)
- 双长整型(long long)
- 字符型(char)
- 布尔型(bool)
- 浮点类型
- 单精度浮点型(float)
- 双精度浮点型(double)
取值范围
数据类型 | 取值范围 | 字节 |
char | -128~127 | 1字节(8位) |
short | -32768~32767 | 2字节(16位) |
int | -2147483648~2147483647 | 4字节(32位) |
long | -2147483648~2147483647 | 4字节(32位) |
long long | -9223372036854775808~9223372036854775807 | 8字节(64位) |
float | 1.175*10^-38~3.402*10^38 | 4字节(32位) |
double | 2.225*10^-308~1.797*10^308 | 8字节(64位) |
2.常量和变量
常量
常量包括:
- 字面常量
- 任何类型:布尔型、整型、浮点型、字符、字符串等
- const修饰的常量
- const修饰普通变量,结果为定义了一个常量,但是这个常量可以通过指针修改
- #define修饰的标识符常量
- 定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了
- 使用:#define MAXSIZE 100
- 代码中所有的MAXSIZE将会被替换为100
- 枚举常量
- enum 枚举类型名 {常量1,常量2,常量3,.......};
变量
定义变量
int a=10;
变量的分类
变量分为:全局变量和局部变量
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
- 全局变量的生命周期是:整个程序的生命周期。
在全局变量和局部变量同时存在时,优先执行局部变量
这一段代码输出的结果是15
为什么要用变量
输入时要先定义变量,循环时也需要变量的自增或自减……
此处定义的变量i的自增可以输出一串递增的数字。
3.输入与输出
格式输出函数printf()
格式:
printf(“格式控制字符串”,输出列表);
格式控制:由双引号括起来的字符串,用于指定输出格式。
输出表列:需要输出的数据列表,彼此间用逗号分隔,可以是任意合法的表达式。
打印时的输出类型
数据类型 | 打印类型 |
char | %c |
short | %hd |
int | %d(十进制) %o(八进制) %x(十六进制) |
long | %ld |
long long | %lld |
float | %f |
double | %lf |
数据类型 | 打印类型 |
无符号数(十进制) | %u |
字符串 | %s |
打印一个百分号(%) | %% |
float类型保留两位小数(包括小数点一共五位) | %5.2f |
标准化指数形式输出实数(标准保留六位小数) | %e |
%e:
小数点前必须有而且只能有一位为非零数字
格式输入函数scanf()
格式:
scanf(“格式控制”,地址表列);
输入数据时不可指定精度,但可指定宽度
4.算术运算符和算术表达式
两个单目运算符和五个双目运算符
单目正 | + |
单目负 | - |
乘 | * |
除 | / |
取模 | % |
加法 | + |
减法 | - |
- 按照运算符的优先级别从高到低依次执行
- 用+、-、*、/运算的两个数中有一个是double类型,那结果也是double型,这是因为所有实数都按double型进行运算
自增/自减运算符
int a=1;
a=a+1;
printf("%d",a);
这里表示a=a+1;的语句也可以写成:
- a+=1;
- a++;
- ++a;
但是a++和++a还是有区别的
int a=1;
int b=a++;
printf("%d\n",a);
printf("%d\n",b);
int c=++a;
printf("%d\n",a);
printf("%d\n",c);
逗号运算符和逗号表达式
//输出9 9 8
主要是为了更好的利用一行的空间,使得代码更加紧凑
求字节运算符
sizeof运算符
运算符sizeof用于计算数据类型所占字节数,就是计算该数据所占空间大小。单位是字节,是求字节数运算符。
对于字符串来说,是以‘/0’结尾的,sizeof运算符也会计算‘/0’
//输出8,9,6
strlen函数
使用时记得加头文件 #include<string.h>
strlen()函数遇‘\0’结束
//输出3 9
5.getchar、getch、putchar函数
- getchar()和getch()所需要包含的头文件不同,一般是用getchar()
- getchar() 函数只能接收一个字符,其函数返回值就是从输入端得到的一个字符。
- putchar:putchar 函数打印它的参数
putchar(a); //等价 printf printf("%c",a);
6.关系运算符与关系表达式
大于 | > |
大于等于 | >= |
小于 | < |
小于等于 | <= |
不等于 | != |
等于 | == |
得到的都是关系表达式的真值或者假值
优先级
优先级从小到大:
赋值运算(类似于int a=1)-->关系运算(类似于a!=b)-->算术运算(类似于a+b)
7.逻辑运算符与逻辑表达式
逻辑运算的真假值
a | b | !a | !b | a&&b | a||b |
真 | 真 | 假 | 假 | 真 | 真 |
真 | 假 | 假 | 真 | 假 | 真 |
假 | 真 | 真 | 假 | 假 | 真 |
假 | 假 | 真 | 真 | 假 | 假 |
8.if语句
用法:
if (表达式1){
语句1;
}
else if (表达式2){
语句2;
}
else{
语句3;
}
9.条件运算符
条件运算符(?:)是唯一一个三目运算符,可以有效减少代码量
10.switch语句
用法:
switch(表达式){
case 常量1:语句1
case 常量2:语句2
default:语句n
break;
}
如果输入了一个switch语句中没有的常量值,就会执行default后的语句。