变量:
在程序运行过程中会发生变化的量
定义格式:存储类型 数据类型 变量名;
回顾一下存储类型:auto static external register
例如:(auto) int a;//定义一个整型变量a;
auto可以省略
int a=10;
名称 | 字节 | 取值范围(了解) |
int | 4 | -2^31 ~ 2^31 -1 |
char | 1 | -2^7 ~ 2^7-1 |
short | 2 | -2^15 ~ 2^15 -1 |
long | 32位:4 64位:8 | 32:-2^31 ~ 2^31 -1 64:-2^63 ~ 2^63 -1 |
float | 4 | 有效位数:6-7 |
double | 8 | 有效位数15-16 |
变量分类:全局变量和局部变量
全局变量:定义在函数的外部,在整个程序中都可以被访问;
局部变量:定义在函数内部,在整个函数内都可以被访问
局部和全局变量的区别:
局部变量 | 全局变量 | |
定义位置 | 函数内部 | 函数外部 |
初始值(不赋值) | 值:随机值 | 值:0 |
作用域 | 整个函数中都可以 | 整个程序中都可以 |
存储位置 | 栈区 | 全局存储区 |
生命周期 | 同整个函数共存亡 | 同整个程序共存亡 |
常量:
在程序的运行中不会发生变化的量
分类:
字符型常量
字符串型常量
整型常量
浮点型常量
指数常量
标识常量
字符型常量
使用单引号' '包裹的内容都叫字符,单引号只能引一个字符
'a'---->字符常量a
a----->变量a
'!'------>字符!
'1'----->字符1
'\n'----->换行
\ : 转义 后面可以跟随 字母 数字(八进制 十六进制 不写0) 符号
转义字符表示一个字符
'\x41'---->'\101'----->'A'
printf("你说:\"sakfkasfh\" ");
'\\'---->字符 \
'\?'---->字符 ?
字符串常量
使用双引号" "包裹的内容都叫字符串,系统会在字符串最后添加\0作为字符串结束的标志
"hello"----》字符串hello 字符的长度+1
"abc"
整型常量
1 2 3 4 5 6
浮点型常量
1.9 1.32
指数常量
3*10^2----->3e2
2*10^5------>2e5
注意;e的后面不能跟小数 只能是整数
标识常量
宏定义:用于标识常量或者表达式 宏替换 宏代替
定义格式:#define 宏名(一般大写) 常量或者表达式
特点:只做单纯的替换 不会进行计算
如:
#define N 2
#define M N+3 //2+3
#define NUM N+M/2+1 //2+2+3/2+1
void main()
{
int a = NUM;
printf("%d\n",a);
}
答案:6
输入输出语句
按照格式输入输出
格式:
"%d" int
"%c" char
"%f" float
"%lf" double
"%s" 字符串
"%#x" "%x" 十六进制数
"%#o" "%o" 八进制
"%p" 地址
"%e" 指数
输出:printf
#include <stdio.h>
int printf(const char *format, ...);
功能:输出内容
参数:
1:字符串 如果包含格式则有后续参数
2:要和第一个参数中的格式对
返回值:输出的字符的个数
输入scanf
int scanf(const char *format, ...);
功能:可以输入一些内容(从终端输入)
参数:
1:字符串(只写格式)
2:用来保存数据的变量的地址
返回值:正确输入的个数
如:
int ret=scanf("%d%d%d",&a,&b,&c);
printf("ret=%d\n",ret);
按照字符输入输出
输出:putchar
int putchar(int c);
功能:按照字符输出 向终端输出一个字符
参数:你要输出字符的ascii值 字符
返回值:输出字符的ascii值
putchar(’A‘);
putchar(97);
输入:getchar
int getchar(void);
功能:按照字符输入 从终端输入一个字符
参数:无
返回值:输入字符的ascii
此时输入就只是输入一个值
int a=getchar();
putchar(a);
垃圾字符:
空格、tab、回车
回收:%*c 空格 getchar
1.%*c回收:只能回收一个字符
2.空格:可以回收多个
3.getchar:用于循环语句中
强制转换
在需要转换的变量前面加(要转换的类型)
int a=9;
flaot b =(float)a/2;