第五期:变量与常量讲解

变量与常量的基本定义

生活中,有些值是可变的(比如年龄、体重等等),有些值是不变的(比如圆周率、血型等等)。

不变的值,在C语言中用 常量 来表示,变的值用 变量 来表示。

如何定义变量

//比如

int age = 19;              //定义一个年龄变量,类型是int

float weight = 49.8f;  //定义一个体重变量,类型是float

char ch = 'g';             //定义一个字符变量,类型是char

变量的分类 

·全局变量

·局部变量

#include<stdio.h>

int global = 2009;   //全局变量

int main(){

        int local = 2008;   //局部变量

        //下面定义的global会不会有问题?

        int global = 2010;   //局部变量

        printf("global = %d\n", global);

        return 0;

}

上面的局部变量global的定义并无问题!

当局部变量和全局变量同名的时候,局部变量优先使用(当然,前提是在该局部变量所在作用域内。)

变量的使用(输入与输出) 

//这里介绍一下,C语言中的输入、输出函数

//scanf()-----输入函数  //注意,在2010年版本之后,VS编译器中scanf被认为是不安全的,要想使用,可以在代码的第一行加#define _CRT_SECURE_NO_WARNINGS

//printf()-----输出函数

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main() {  

        int num1 = 0;  

        int num2 = 0;  

        int sum = 0;    

        printf("输入两个操作数:");  

        scanf("%d %d", &num1, &num2);  //&为取地址符

        sum = num1 + num2;  

        printf("sum = %d\n", sum);  

        return 0;

}

输入输出格式控制符(全)

1.%d------输出十进制整数
printf("%d\n", 123);  // 输出:123

2.%nd------按指定位数输出整数

printf("%2d\n",1234);  //指定位数小于实际位数,按照实际位数输出

//输出:1234

printf("%5d\n",1234);  //指定位数大于实际位数,默认右对齐,缺的位数用空格补齐

//输出: 1234

3.%0nd------按指定位数输出整数,缺的用0补齐

printf("%5d\n",1234);  //输出:01234

4.%u------输出无符号十进制整数
printf("%u\n", 123);  // 输出:123

5. %o------输出八进制整数
printf("%o\n", 123);  // 输出:173

6. %x, %X------输出十六进制整数,%x使用小写字母,%X使用大写字母
printf("%x\n", 123);  // 输出:7b
printf("%X\n", 123);  // 输出:7B

 7.%e, %E------输出科学计数法表示的数,%e用小写字母e,%E用大写字母E

double num = 123.456789;
printf("%e\n", num);  // 输出:1.234567e+02
printf("%E\n", num);  // 输出:1.234567E+02

8. %f------输出小数,可以指定小数点后的位数,默认是6位

double num = 123.456789;
printf("%f\n", num);  // 输出:123.456789

9.%.nf-------指定小数点后保留n位小数

double num = 123.456789;

printf("%.2f\n", num);  //指定位数小于实际位数,默认四舍五入

// 输出: 123.46

printf("%.2f\n", 1.2);  //指定位数大于实际位数,默认用0补齐

// 输出: 1.20

10.%n.nf------//先看小数点后的n,输出规则同上;小数点后的n+小数点所占的1位+所输出数的整数部分的位数,与小数点前面的n比较,规则与%nd相同,另外,两个n前面都可加0

printf("%1.2f\n",123.456);  //输出:123.46
printf("%9.4f\n",123.456);  //输出: 123.4560
printf("%8.4f\n",123.456);  //输出:123.4560

11. %g,%G------输出浮点数的最简形式,%g选择%f或%e格式中较短的一种,%G选择%f或%e格式中较短的一种

double num = 123.456789;
printf("%g\n", num);  // 输出:123.456789
printf("%G\n", num);  // 输出:123.456789

12.%c------输出单个字符
printf("%c\n", 'A');  // 输出:A

13. %s------输出字符串

char str[] = "Hello, World!";
printf("%s\n", str);  // 输出:Hello, World!

printf("%s\n", "Hello, World!");  // 输出:Hello, World!

14. %%------输出一个百分号

printf("%%\n");  // 输出:%

15. %p------输出指针地址或使用&的目标地址

int *ptr = NULL;

int a =10;
printf("%p%p", ptr,&a);  // 输出:(nil) 或者 0x0

 16.%n------将直到现在为止打印出来的字符数存入某个变量中(输入输出中均可使用)

int count;
printf("Hello, World!\n%n", &count);  // 输出:Hello, World!
printf("Character count: %d\n", count);  // 输出:Character count: 13 //思考:这里为什么输出的是13?

//提示:!占两个字节

scanf("Hello\n%n",&count);

printf("Character count: %d\n", count);  // 输出:Character count: 5

17.%[]------输入字符串,输出与字符集合匹配的字符串中的字符(只允许在输入中使用)

char str[100] = {0};

scanf("%[a-d]",str);  //只允许输入a到d的字符,其余字符留在输入缓冲区内

printf("%s\n",str);  //输入:abdef  输出:abd

[a-d]也可写成[d-a]或[abcd],或者[]里可以写任意字符,如[12.。?gh]

scanf("%[12.。?gh]", str);  //输入:12.。fi》》?gh  输出:12.。?gh

18. %*------忽略输出一个参数

printf("%d %*d %d\n", 1, 2, 3, 4);  // 输出:1  3 4

变量的作用域和生命周期

作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用 的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

1. 局部变量的作用域是变量所在的局部范围。

2. 全局变量的作用域是整个工程。

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

2. 全局变量的生命周期是:整个程序的生命周期。

常量

C语言中常量的定义和变量的定义形式有所差异。

C语言中常量分为以下几种:

字面常量

int main(){

        3.14;  //字面常量

       1000;  //字面常量

}

const 修饰的常变量

//const 修饰的常变量

const float pi = 3.14f;   //这里的pai是const修饰的常变量

pi = 3.14;  //是不能直接修改的!

注: 上面例子中的 pi 被称为 const 修饰的常变量,const 修饰的常变量在C语言中只是在语法层面限制了 变量 pi 不能直接被改变,但是 pi 本质上还是一个变量的,所以叫常变量。  

#define 定义的标识符常量

#define MAX 100

int main(){

        printf("max = %d\n", MAX);    //输出:100

}

枚举常量

enum gender

{

        male,

        female,

        secret  //最后一个没有逗号

};  //括号结尾加分号

//括号中的male,female,secret是枚举常量

int main() {          

        printf("%d\n", male);    //输出:0

        printf("%d\n", female);  //输出:1  

        printf("%d\n", secret);    //输出:2

        //注:枚举常量默认是从0开始,并依次向下递增1

}

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值