作者前言
欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com
目录
数组
操作符
常见关键字
________________________________________
紧接上一课,上一篇博客我已经简单介绍了变量的作用域和生命周期,常量,字符串+转义字符+注释,选择语句,循环语句,函数这些下面我们再接着来介绍C语言其他的
插播小知识
前面可能有些小可爱对scanf()有疑问,下面我们就来插播一下这个小知识
scanf
在图中可以看出,scanf是有返回值的,返回值是实际读取到数据的个数,比如我们要输入两个数字,结果我就输入了一个数字,那scanf()的返回值就是1,当我如果一个都不输入会返回多少,我们来试试
看看,是-1哦哦不要搞错了
'\0'
数字0;0
字符0;'0' 对应的ASCII值为48
转义字符0:'\0' 对应的ASCII值为0 (十进制) 是一个8进制的如:\ddd
全局变量和局部变量名字相同的情况下局部优先
变量初始化
未初始化
#include <stdio.h>
int main()
{
int a;
printf("%d", a);
return 0;
}
结果
因为你未初始化,a会是随机值,编译器不支持这样所有会报错
________________________________________________________________
数组
简单的来讲就是一堆数据类型相同的数据组成的集合
数组的定义
#include <stdio.h>
int main()
{
//数组的定义
int arr[10];
char arr_1[10];
double arr_2[10];
float arr_3[10];
return 0;
}
数据类型 数组名[元素个数]
数组的初始化(就是赋值的过程)
#include <stdio.h>
int main()
{
//数组的初始化
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//完全初始化
char arr_1[10] = {'a','b','c'};//不完全初始化
double arr_2[10] = {0};
float arr_3[10] = {1.0f,2.0f,3.0f};
return 0;
}
结果:
初始化分为完全初始化和不完全初始化,不完全初始化剩下的元素默认为0
这里我们简单了解一下
数组的下标
注意
数组的下标是从0开始的
我们可以通过下标访问元素或者修改元素
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", arr[1]);
arr[1] = 11;
printf("%d\n", arr[1]);
return 0;
}
注意一下,就是数组的元素要是数字(整数 ,小数......)才能直接修改,如果是字符的话就不能直接修改了
如果我们想让一一打印出来也是可以的,
代码如下:
#include <stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
/*printf("%d\n", arr[1]);
arr[1] = 11;
printf("%d\n", arr[1]);*/
int a = 0;
while (a < 10)
{
printf("arr[%d]=%d\n", a, arr[a]);
a++;
}
return 0;
}
结果如下:
操作符
算术操作符
#include <stdio.h>
int main()
{
int a = 10;
int b = 3;
float c = 3.0f;
//整数的除法
printf("a/b=%d\n", a / b);
//小数的除法
printf("a/c=%lf\n", a / c);
return 0;
}
结果:
除法有两种一种结果为小数,一种结果为整数
%
代码如下:
#include <stdio.h>
int main()
{
int a = 10;
int b = 3;
printf("a除b取模的值为:%d", a % b);
return 0;
}
结果:
记住,只有整数取余,没有小数
移位操作符(移动的是二进制)
>> <<
后期会讲
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a + b;
printf("%d",a);
return 0;
}
代码二:
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a += b;
printf("%d",a);
return 0;
}
上面两种写法的运行结果都是一样的
a=a+b
a+=b ==> a=a+b
同理其他也是这个意思
#include <stdio.h>
int main()
{
int a = 2;
int b = 0;
printf("%d\n", !a);
printf("%d\n", !b);
return 0;
}
结果:
#include <stdio.h>
int main()
{
int a = 10;
int b = ++a;//==>a=a+1;b=a;
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
结果:
后置++,先使用,再加1
代码如下:
include <stdio.h>
int main()
{
int a = 10;
int b = a++;//==>a=a+1;b=a;
printf("a=%d\n", a);
printf("b=%d\n", b);
return 0;
}
结果:
前置--就是先减1再使用
后置--就是先使用,再减1
这里我就不代码演示了
下面我们来讲讲()类型强制转换
代码如下:
#include <stdio.h>
int main()
{
int a = (int)1.000;
printf("%d", a);
return 0;
}
结果:
注意,这个不能随便使用
(0为假,1为真)
&&相当与数学的逻辑且
||相当于数学的逻辑或
下面代码演示:
#include <stdio.h>
int main()
//给定一个数字,判断是偶数且小于10
{
int a = 2;
if (a % 2==0 && a < 10)
{
printf("%d满足", a);
}
return 0;
}
结果:
条件操作符(三目操作符)
exp1>exp2?exp1:exp1 意思是exp1大于exp2吗,大于就返回exp1,否则返回exp2
代码如下:
#include <stdio.h>
int main()
{
int a = 5;
int b = 6;
int c = (a > b ? a : b);
printf("%d", c);
return 0;
}
结果:
相当于一个判断语句if....else,,,
逗号表达式
(exp1,exp2,exp3...expn) 从左到右运算,返回结果为最后一个expn
代码如下:
#include <stdio.h>
int main()
{
int a = 10;
int b = 11;
int c = 12;
int d = (a += b, a -= b,b += c, b -= a);
printf("%d", d);
return 0;
}
结果:
常见关键字
我们就先讲讲这些意思
auto 自动,只适用于修饰局部变量,让局部变量自动创建和自动销毁,大多数编译器省略了
break 让循环停止
switch()
{ case:语句
default:语句
}
cotinue:继续, 直接跳过开始下一次循环
do.....while()
extern 声明外来变量 ,函数等
goto 一种语句
register 寄存器
signed 有符号
unsigned 无符号
static 创建静态变量
struct 结构体
typedef 类型重定义
union 联合体
volatile (运用太少不介绍)
总结
以上就是我分享的内容,欢迎各位小可爱前来私信我