文章目录
1.整型
short
int
long long
整型int:32位,4字节,在-231~231-1之间,记住绝对值在10^9范围内的整数都可以定义为int型;
长整型long:64位,8字节,-263~263-1之间,1010-1018之内的数都可以定义为long型,一般在初值后加 LL;
2.浮点型
单精度float
32bit,1bit作为符号位,8bit作为指数位,23位作为尾数位,-2128-2128,但是有效精度只有6~7位(由2^23得到),精度不是很高;
双精度double
64bit,52bit作为尾数位,有效精度15~16位
由于精度问题,对于浮点数类型,都用double储存,f%是浮点型的输出格式
3.字符型
char
1)字符变量和字符常量
char c;
char c = 'e';
printf("c%",c)
2)转义字符
\n表示换行……
3)字符串常量
char str1[25] = "Wo ai de ren bu ai wo";
printf("%s",str1);
4)布尔型
bool型变量,true和false,或者使用整型常量对其赋值,非零为true,C语言中要使用stdbool.h头文件才可以使用,使用d%输出bool变量时,输出对应的0和1
3. 强制转换(小可以自动转大,大强制转小)
4.符号常量和comst常量
1) #define 标识符 常量(没有“;”)
例如:
#define PI 3.1415
也就是替换,程序中使用PI自动转为3.1415使用
2) const 数据类型 变量名 = 常量;(有“;”)
同样的用法,一旦他们确定值后就无法改变,推荐使用const用法
- define除了定义常量以外,还可以定义任何语句或片段*
#include<stdio.h>
#define ADD(a,b) ((a)+(b))
int main()
{
int num1 = 3,num2 = 5;
printf("%d",ADD(num1,num2));
return 0;
}
不能写成
#define ADD(a,b) (a+b)
因为在宏定义下,直接将对应的部分替换,再进行编译和运行 ,比如:
#include<stdio.h>
#define CAL(x)(x * 2 + 1)
int main()
{
int a = 1;
printf("%d\n",CAL(a+1));
return 0;
}
上面代码在进行替换时是a+1*2+1,得到结果并不是想要的5,而是4
5.运算符
1)算术运算符: + - * / % ++ –
2)关系运算符: < > <= >= == !=
3)逻辑运算符: && || ! 与或非
4)条件运算符:?: 唯一的三目运算符
使用:A?B?C
判断A,A为真,执行B,A为加,执行C
5)位运算符: << 左移 , >> 右移 , | 或 , & 与 ,^ 位异或 , ~位取反
因为int的上限是2^31-1或2-30-1,程序中的无穷大数INF可以进行一下设置
const int INF = (1<<30) - 1;
或
condt int INF = 0x3fffffff;
6.scanf输入和printf输出
int a,b,c;
scanf("%d",&a); //& 取地址符
printf("%d",a);
scanf("%d:%d:%d",&a,&b,&c); //输入时必须按照格式a:b:c输入,如1:2:3
scanf("%d:%d:%d",&a,&b,&c); //正常输入: 3 4 5
scanf除了c% ,其他格式符的输入都是以空格,换行等作为结束标志,因此c%才会读入空格跟换行,其他都会跳过,s%以空格和换行作为结束
** int(%d)
long long(%lld)
float(f%)
double(lf%)
char(c%)
**
字符串(char数组)(s%)输入时不使用“&”,因为数组特殊,数组名就代表数组的首地址
#include<stdio.h>
int main(){
int a;
char c,str[10];
scanf("%d%c%s ",&a,&c,str);
printf("a=%d,c=%c,str=%s",a,c,str);
return 0;
}
输入45 a asd 得到a=45,c= ,str=a,因为c读到了空格
printf与scanf格式控制的变化:
double输出使用==%f==,输入时scanf使用==%lf==
三种实用的输出格式:
1)%md 使不足m为的int型变量进行右对齐输出,高位用空格填充,数据超出m为,保持原样输出
2)%0md 使用0填充
3)%.mf 让浮点数保留m位小数输出
7.使用getchar和putchar输入/输出字符
getchar用来输入单个字符,putchar输出单个字符
#include<stdio.h>
int main(){
char c1,c2,c3;
c1 = getchar();
getchar();
c2 = getchar();
c3 = getchar();
putchar(c1);
putchar(c2);
putchar(c3);
return 0;
}
输入abcd,输出acd,b被第二个getchar()接受
8.typedef定义别名
例如:typedef long long LL;
9.常用Math函数
1.fabs(double s) 取绝对值
2.floor(double x)和ceil(double x) 向下向上取整
3.pow(double r,double e) 幂函数
4.sqrt(dounble x) 开方函数
5.log(double x) 返回以自然底数为底的对数
6.sin(double x)和cos(double x),tan(double x)
7.asin(),acos(),atan()反三角函数
8.round(double x) 对x四舍五入,返回double型,进行取整要强制转换
2019.12.23