作者前言
欢迎小可爱们前来借鉴我的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 int main(){int a;printf("%d", a);return 0;}
结果
因为你未初始化,a会是随机值,编译器不支持这样所有会报错
________________________________________________________________
数组
简单的来讲就是一堆数据类型相同的数据组成的集合
数组的定义
#include int main(){//数组的定义int arr[10];char arr_1[10];double arr_2[10];float arr_3[10];return 0;}
数据类型 数组名[元素个数]
数组的初始化(就是赋值的过程)
#include 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 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 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 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 int main(){int a = 10;int b = 3;printf("a除b取模的值为:%d", a % b);return 0;}
结果:
记住,只有整数取余,没有小数
移位操作符(移动的是二进制)
>> <<
后期会讲
位操作符(二进制操作) &^| 后期会讲 赋值操作符 = +=-= *= /= &= ^ =|= >>=<<= 下面我来讲一讲 += 代码1:
#include int main(){int a = 10;int b = 20;a = a + b;printf("%d",a);return 0;}
代码二:
#include int main(){int a = 10;int b = 20;a += b;printf("%d",a);return 0;}
上面两种写法的运行结果都是一样的
a=a+b
a+=b ==> a=a+b
同理其他也是这个意思
单目操作符 !逻辑反操作 –负值 +正值 &取地址 sizeof操作数的类型长度(以字节为单位) ~对一个数的二进制按位取反 —前置、后置 — ++前置、后置 ++ *间接访问操作符 ( 解引用操作符 ) ( 类型 ) 强制类型转换 所谓单目操作符就是只能操作一个操作数 前面的+是二目操作符 如a+ b 下面我们介绍!(真变假,假变真) 代码如下:
#include int main(){int a = 2;int b = 0;printf("%d\n", !a);printf("%d\n", !b);return 0;}
结果:
使用!时要清楚,为假是默认为0,为真时是默认为1 -和+,sizeof,~我就不讲了后期讲 我来讲讲++ 有前置++,先加1,再使用 代码如下
#include 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 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 int main(){int a = (int)1.000;printf("%d", a);return 0;}
结果:
注意,这个不能随便使用
关系操作符 > >= < <= != 用于测试“不相等” == 用于测试“相等”逻辑操作符 && 逻辑与 ||逻辑或 如图:
(0为假,1为真)
&&相当与数学的逻辑且
||相当于数学的逻辑或
下面代码演示:
#include int main()//给定一个数字,判断是偶数且小于10{int a = 2;if (a % 2==0 && a < 10){printf("%d满足", a);}return 0;}
结果:
条件操作符(三目操作符)
exp1>exp2″ />#include 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 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 breakcase char constcontinue default dodouble else enum extern float forgoto ifintlong registerreturnshort signedsizeofstatic struct switch typedef union unsignedvoid volatile while
我们就先讲讲这些意思
auto 自动,只适用于修饰局部变量,让局部变量自动创建和自动销毁,大多数编译器省略了
break 让循环停止
switch()
{ case:语句
default:语句
}
cotinue:继续, 直接跳过开始下一次循环
do…..while()
extern 声明外来变量 ,函数等
goto 一种语句
register 寄存器
signed 有符号
unsigned 无符号
static 创建静态变量
struct 结构体
typedef 类型重定义
union 联合体
volatile (运用太少不介绍)
总结
以上就是我分享的内容,欢迎各位小可爱前来私信我