学习笔记day03-C语言基础:常量与变量、输入输出函数
三、常量与变量
1.常量
1) 整型常量 10 0888 0x15
2) 浮点型常量 3.14 3.14e+2
3) 字符型常量 'a' 'b' '1'
4) 字符串常量
"123” "a"
由多个字符构成
字符串末尾有'\0', 代表字符串的结束
有效字符:第一个'\0'前的字符
"123" --> '1' + '2' + '3' + '\0'
"a" --> 'a' + '\0'
5)标识符常量(宏定义)
#define 标识符 常量值
#define MAX 100
宏定义在预处理阶段,宏定义替换
eg:
#include <stdio.h>
#define MAX 100
#define SUM 3 + 4
int main(int argc, char *argv[])
{
printf("%d\n", MAX); -->printf("%d\n", 100);
printf("%d\n", SUM * 10); -->printf("%d\n", 3 + 4 * 10);
return 0;
}
2.变量
变量就是用来保存不同的常量值
1)定义 <存储类型> <数据类型> <变量名>;
存储类型:
1)auto 自动存储类型,系统自动分配空间自动释放空间
2)register 将变量的空间申请在CPU内部的寄存器中,如果申请失败,会转为auto类型
3)extern 外部调用
eg:
2.c:
extern int a;//extern外部调用1.c当中的变量a
int main(int argc, char *argv[])
{
printf("a = %d\n", a);//打印1.c中已经初始化的值
return 0;
}
1.c:
int a = 100;//全局变量
4)static
static修饰全局变量、函数
限制全局变量、函数的作用域,只能在本文件中使用隐藏
static修饰局部变量
局部变量的初始化操作只被执行一次
延长局部变量的生命周期,随着整个程序的结束而结束
数据类型:
char short int long float double...
变量名:
标识符,满足命名规则
由字母、数字、下划线构成
不能以数字开头
不能和关键字重名
eg:
auto int a; --> int a;
register int b;
extern int c;
static int d;
2)变量的初始化 在定义变量的时候赋予初值
int a = 10; //初始化变量a的值为10
3) 变量的赋值
int a = 10;
4)全局变量与局部变量
局部变量:
1)在模块{}内部定义的变量为局部变量
2)系统为局部变量开辟的空间随模块的结束而回收
3)局部变量在定义时未初始化,该局部变量的值是随机值
全局变量:
1)定义在模块{}外部
2)全局变量存储在全局变量区,在程序结束之前都可以访问
3)全局变量未初始化,默认为0
4)全局变量的作用范围在本文件中
3.补充:虚拟内存空间
四、输入输出
1.数据输出
1)字符输出函数
头文件:
#include <stdio.h>
putchar(c)
将字符输出显示到显示屏上
c:字符常量、变量、表达式
2)字符输入函数
头文件:
#include <stdio.h>
getchar()
从键盘上获取一个字符数据
返回值:成功,返回键盘上输入的字符数据,失败,-1
eg:
int ch;
ch = getchar();
printf("ch = %c\n", ch);
2.格式输出函数printf
printf("格式控制字符串", 参数列表);
格式控制字符串:
1)格式控制符
用于输出指定的格式 %[指定字符]
%p --> 打印变量的地址
&变量名 --> 取该变量的地址
2)普通字符
原样输出
参数列表:
要输出的数据,各个参数之间用 , 隔开,并且参数列表中参数的个数要与格式控制符的个数相对应
格式符
修饰符![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/361824dc904145e1b182490f2a30b554.png#pic_center)
3.格式输入函数scanf
scanf("格式控制符", 地址表);
1)功能:
按照规定的格式从键盘上输入数据,并保存在地址表中指定的存储单元中
2)格式控制符:
%d --> 输入的整型数据
....
3)地址表:
变量的地址,用取地址符号&
4)输入数据结束的标志:
回车 tab键 空格 超出域宽 输入错误
5)连续输入整型数据:
当连续输入整型数据时,空格,tab,回车可以作为输入的分隔符
6)连续输入字符型数据:
空格、tab键是有效数据
%*c抑制符,抑制当前的字符作为输入数据(消除脏字符)
scanf("%c%*c%c%*c%c",&ch1,&ch2,&ch3);
printf("ch1 = %c ch2 = %c ch3 = %c",ch1,ch2,ch3);
7)输入字符串
%[^\n]将空格作为字符串中的字符输出
eg:
char str[11] = {0};
scanf("%s",str);//hello world
puts(str);//hello
char str[11] = {0};
scanf("%[^\n]",str);//hello world
puts(str);//hello world
格式符号
3.格式输入函数scanf
scanf("格式控制符", 地址表);
功能:
按照规定的格式从键盘上输入数据,并保存在地址表中指定的存储单元中
格式控制符:
%d --> 输入的整型数据
....
地址表:
变量的地址,用取地址符号&
格式符号
4.字符串输入输出函数gets puts
char * gets(char *s)
char *s:字符数组首地址
将键盘上的字符串输入以回车结束,保存在字符数组中,并自加上\0"
int puts(const char *s)
const char *s:字符串地址
打印显示字符串数据,自动换行
eg:
char str[32] = 0;
gets(str);
puts(str);
puts(" ");
五、数据类型的转换
自动换行
1)赋值运算操作时,=右边表达式的数据类型转换成与=左边相同的数据类型
int a = 10,c = 0;
double b = 3.14;
` c = a * b;
2)多种数据类型混合运算时会发生数据类型的转换
低精度 --> 高精度
char->short->int->long->double<-float
signed->unsigned
手动换行(强制转换)
eg:
float b = 3.14;
printf("b = %d\n",(int)b)//b = 3