目录:
1.变量的介绍以及存储
2.算术操作符、赋值操作符、单目操作符
3.scanf和printf的介绍
1.变量的介绍以及存储
1.1.变量的创建
了解了什么是类型了,类型是用来创建变量的。
变量是什么呢?在C语言当中不经常变的量称为常量,经常变化的量称为变量。
变量是如何创建的呢?下是例子:
data_type name;
//数据类型 变量名;
int age; // 整型变量
char ch; // 字符变量
double weight; // 浮点型变量
变量在创建的时候,需要给一个初始值。这个过程就叫初始化。如下:
// 初始化
int age = 18;
char ch = 'D';
double weight = 70.5;
unsigned int height 100;
1.2.变量的分类
分为:全局变量、局部变量
全局变量:在大括号外部定义的变量就是全局变量。全局变量使用的范围更广,
整个工程当中想使用,都是有办法去使用的。
局部变量:在大括号内部定义的变量就是局部变量。
局部变量的使⽤范围是比较局限,只能在自己所在的局部范围内使用的。
代码演示:
#include <stdio.h>int global = 2023; // 全局变量int main()
{int locol = 2018; // 局部变量printf("%d\n", locol);printf("%d\n", global);return 0;
}
1.2.1.注意变量名的命名
如果定义了个全局变量 为 n,在局部变量里面也定义了个 变量名为n,在过程中首先是使用局部变量的 n的值,这里需要注意。如下代码演示:
#include <stdio.h>int n = 1;int main()
{int n = 2;printf("%d\n", n); // 这里打印出来的值应是2,所以变量名命名的时候需要注意。return 0;
}
1.3.全局变量和局部变量在内存中存储在哪呢?
学习C/C++语言当中,我们会关注三个区域:栈区,堆区,静态区;
1.局部变量是放在内存的栈区中;
2.全局变量是放在内存的静态区中;
3.堆区是用来动态管理内存的
如下图:
2.算术操作符、赋值操作符、单目操作符
算术操作符(运算符):+、-、*、/、%
赋值操作符:=、+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=
单目操作符:++、--、+、-
2.1.算数操作符代码演示如下:
// 算术操作符
// +、-、*、/、%
int main()
{int a = 1;int b = 2;int c = 3;int d = 4;int e = 6;float f = 7.1;printf("%d\n", a + b);printf("%d\n", b - a);printf("%d\n", b * c);printf("%d\n",e / d); // 于C语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。printf("%f\n", e / f); // 浮点数的除,返回就不会丢弃小数部分。printf("%d\n", e % d); // 运算符 %,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点数。// 负数取模的情况:// 由一下得出 第⼀个运算数的正负号决定了结果的正负号printf("%d\n",11 % 5); // 1printf("%d\n", -11 % -5); // -1printf("%d\n", -11 % 5); // -1return 0;
}
运行结果:
2.2.赋值操作符
在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。
int a = 0; // 初始化
a = 200; // 赋值
赋值操作符[=],是⼀个随时可以给变量赋值的操作符。
2.2.1连续赋值
如下:
int a = 3;
int b = 4;
int c = 5;
c = b = a + 3; // 虽然C语言支持这样写,但是不方便阅读代码,建议拆开进行写int a = 3;
int b = 4;
int c = 5;
b = a + 3;
c = b;
2.2.2.复合赋值符
在写代码时,我们经常可能对⼀个数进行自增、自减的操作,如下代码:
int a = 10;
a = a + 3;
a = a - 2;
这样的代码C语言提供了更加便捷的写法,如下:
int a = 10;
a += 3;
a -= 2; // 还有更多的复合赋值符,上面我也列出来了,都可以去尝试一下。
2.3.单目操作符
++、--、+(正)、-(负)就是单目操作符的。
2.3.1.++和--
++是⼀种自增的操作符,⼜分为前置++和后置++,--是⼀种自减的操作符,也分为前置--和后置--.
2.3.2.前置++
int a = 10;
int b = ++a; // ++的操作数是a,是放在a前面的,就是前置 ++
printf("%d\n", b);// 计算⼝诀:先+1,后使⽤;
// a原来是10,先+1,后a变成了11,再使⽤就是赋值给b,b得到的也是11,所以计算技术后,a和b都是11.
int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);
2.3.3.后置++
int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);// 计算⼝诀:先使⽤,后+1
// a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是
11,b是10
int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);
2.3.4.前置--
// 如果你懂了前面我写的前置++,那前置--是同理的,只是把加1,换成了减1;
// 计算⼝诀:先-1,后使⽤
int a = 10;
int b = --a; // --的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 9
2.3.5.前置--
// 同理后置--类似于后置++,只是把加一换成了减一
// 计算⼝诀:先使⽤,后-1
int a = 10;
int b = a--; // --的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 10
2.3.6.+和-
这里的+是正号,-是负号,都是单目操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,
但是写了也不会报错。
int a = +10; 等价于 int a = 10;
运算符 - 用来改变⼀个值的正负号,负数的前面加上 - 就会得到正数,正数的前面加上 - 会得到负 数。
int a = 10;
int b = -a;
int c = -10;
printf("b=%d c=%d\n", b, c); // 这⾥的b和c都是-10
int a = -10;
int b = -a;
printf("b=%d\n", b); // 这⾥的b是10
3.scanf和printf的介绍
3.1.printf
基本用法:printf() 的作用是将参数⽂本输出到屏幕。它名字里面的 f 代表 format (格式化),表示可以 定制输出文本的格式。
#include <stdio.h>int main(void)
{printf("Hello World"); // 会在屏幕输出 Hello Worldreturn 0;
}
3.1.printf输出之后怎么换行
printf() 不会在行尾自动添加换行符,运行结束后,
光标就停留在输出结束的地方,不会自动换行。
为了让光标移到下⼀行的开头,可以在输出文本的结尾,添加⼀个换行符 \n 。
#include <stdio.h>
int main(void)
{printf("Hello World\n");return 0;
}
如果文本内部有换行,也是通过插入换行符来实现的,如下代码:
#include <stdio.h>
int main(void)
{printf("Hello\nWorld\n");printf("Hello\n");printf("World\n");return 0;
}
printf() 是在标准库的头文件 stdio.h 定义的。使用这个函数之前,必须在源码文件头部引入这个头文件。
3.2.scanf
当我们有了变量,我们需要给变量输⼊值就可以使用scanf 函数,如果需要将变量的值输出在屏幕上 的时候可以使用 printf 函数,下面看⼀个例子:
基本用法:scanf() 函数⽤于读取用户的键盘输入。
程序运行到这个语句时,会停下来,等待用户从键盘输入。
用户输入数据、按下回车键后, scanf() 就会处理用户的输⼊,将其存入变量。
它的原型定义在头头件 stdio.h 。
scanf() 的语法跟 printf() 类似。
scanf(%d, &i);
scanf()的第一个参数 %d ,表示用户输入的应该是一个整数。 %d 就是一个占位符,% 是占位符的标志,d 表示整数。第二个参数& 表示,将用户从键盘输入的整数存入变量i。
注意:变量前面必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,而是地址即将变量 i 的地址指向用户输入的值。如果这里的变量是指针变量 (比如字符串变量),那就不用加 &运算符。
3.2.1.scanf的返回值
scanf()的返回值是⼀个整数,表示成功读取的变量个数。
如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量 EOF。
在VS环境中按3次 ctrl+z ,才结束了输入,我们可以看到r是2,表示正确读取了2个数值。如果一个数字都不输入,直接按3次 ctrl+z 输出的r是-1,也就是EOF。
3.2.2.占位符
scanf()常用的占位符如下,与printf()的占位符一致:
-
%c:字符
-
%d:整数
-
%f:float类型浮点数
-
%lf:double类型浮点数
-
%Lf:long double类型浮点数
-
%s:字符串
-
%[]:在方括号中指定一组匹配的字符 (比如 %[0-9] ),遇到不在集合之中的字符,匹配将会
停止。