【C语言学习】————操作符、关键字
4_6学习浅谈
- 1、操作符
- 2、关键字
1、操作符
单目操作符
++ - - ~ & *
++与- -操作符分为前置与后置关系,看如下代码:
int a = 10;int b = ++a;printf("%d\n %d", a, b);//看一下a与b的值为多少。
这输入一个前置++问题,代表先进行++操作符的运算,而后进行=操作符的运算。故b=11,a=11.
下面看一个后置++代码:
int a = 10;int b = a++;printf("a=%d\nb=%d", a, b);
此时++后置,先进行=运算符的运算,而后进行++运算符的运算。故b=10,a=11.
运算符- -同理。
—————————————————————————————
下面介绍~运算符,该运算符代表对变量按位取反。
提到这个运算符就要介绍一下数据在内存中怎么存储:
①数据在内存中以二进制的方式存储
②数据在内存中存储的是本身的补码形式(正数原码 反码 补码相同,这里只介绍负数形式)
下面来看一段代码
int a = 0;int b = 1;printf("~a=%d\n~b=%d", ~a, ~b);
根据上面数据如何存储来分析这道题:
—————————————————————————————
&与*操作符
放到介绍指针时一起介绍。
2、关键字
① sizeof关键字实现:
printf("%d\n", sizeof(int));printf("%d\n", sizeof(char));printf("%d\n", sizeof(short));printf("%d\n", sizeof(long));printf("%d\n", sizeof(long long));printf("%d\n", sizeof(float));printf("%d\n", sizeof(double));
② struct关键字实现:
struct代表结构体,以人为例,可以细分为一个人的姓名,身高,体重,年龄。
struct Human{char name[20];//记录名字int tall;//记录身高int age;//记录年龄int weight;//记录体重};//以李四举例struct Human lisi = { "李四", 175, 18, 70 };struct Human *p = &lisi;printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);
通俗来讲,struct就是一个包含着各种类型变量的大数组。
③ typedef关键字实现
struct Human{char name[20];//记录名字int tall;//记录身高int age;//记录年龄int weight;//记录体重};typedef struct Human student;//——————————//以李四举例student lisi = { "李四", 175, 18, 70 };student *p = &lisi;printf("姓名:%s\n身高:%d\n年龄:%d\n体重:%d\n", p->name, p->tall, p->age, p->weight);
相当于给我们创建的结构体变量取个别名为“student”,“student”代表着我们创建的结构体变量。
打印出是和上一个一样的。
④ static关键字的用法
tip1:用来修饰局部变量
tip2:用来修饰全局变量
tip3:用来修饰函数
上次的文章有提到,局部变量与全局变量均存在作用域与生命周期,static用来改变它们的作用域与生命周期,来看一段代码
int sum(int a)
{int c = 0;static int b = 3;c += 1;b += 2;return (a + b + c);
}
int main()
{int i;int a = 2;for (i = 0; i < 5; i++){printf("%d,", sum(a));}
分析: 根据上个文章所提到,变量出了所在的{}范围就会销毁,故不妨假设打印出了八个8,。来看真正结果
和我们所假设的不同,static在里面“作怪”,可推知,static修饰的局部变量的生命周期会被延长至与整个程序的生命周期相同,故出了原作用域{}后并没有被销毁
————————
来看static修饰的全局变量:
全局变量的作用域是整个工程,生命周期同程序相同。
下面是用static修饰后
可以看到无法解析变量n。故可知道static修饰全局变量后,全局变量不再作用于整个工程,而作用于自己所在的文件中。
———————
先看没有修饰函数时
这是一个求和函数,在一个文件中创建与定义,在另一个文件中调用,但当被static修饰后
这个求和函数无法被调用,故函数同全局变量一样,被static修饰后都只能作用于本文件内。
【C语言学习】————操作符、关键字相关推荐
- c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等
关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...
- C++语言学习(八)——操作符重载
C++语言学习(八)--操作符重载 一.操作符重载基础 1.操作符重载的语法 通过operator关键字可以定义特殊的函数,operator本质是通过函数重载操作符. Type operator op ...
- mfc实现c语言的注释,C语言学习:标识符、关键字、注释、表达式和语句
正文共:1526 字 2 图.预计阅读时间: 4 分钟. 文章由源世界原创,转载剽窃必究! 标识符 界说变量时,我们使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达 ...
- C语言学习—联合体Union和关键字Typedef
C语言学习-联合体Union和关键字Typedef 前言 1 联合体Union 1.1 Union认知 1.2 Union应用 2 关键字typedef 前言 内容主要为联合体Union和关键字Typ ...
- C语言学习19:操作符详解
目录 1.操作符种类 1.1 算术操作符 1.2 移位操作符 1.3 位操作符 1.4 赋值操作符 1.5 单目操作符 1.6 关系操作符 1.7 逻辑操作符 1.8 条件操作符 1.9 逗号表达式 ...
- C语言学习及应用笔记之三:C语言const关键字及其使用
在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图. 事实上,无论我 ...
- C语言学习及应用笔记之二:C语言static关键字及其使用
C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...
- C语言学习之extern关键字
1.了解extern 1.extern是C语言的一个关键字,可以用来修饰函数与变量 2.当extern修饰一个变量或函数时时,就是在声明这个变量(函数),告诉编译器在外部文件中已经这个变量(函数),要 ...
- c语言学习(常见关键字)
c语言提供的关键字 特点 1,c语言提供的,不能自己创建关键字 2,变量名不能是关键字,下面这种就是错误的写法 int char; 常见的关键字 auto break ca ...
- C++语言学习(十二)——C++语言常见函数调用约定
C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...
最新文章
- 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
- LeetCode 709	 To Lower Case -- java,python解法
- OpenGL coordinate systems坐标系统的实例
- Laravel 日期时间处理包 Carbon 的应用
- NotifyMyFrontEnd 函数背后的数据缓冲区(一)
- 那么多GAN哪个好?谷歌大脑泼来冷水:都和原版差不多 | 论文
- 最好用的卸载软件工具(Your Uninstaller! PRO)
- 家里的无线网最近总是网速不稳定,一阵一阵的卡,是怎么回事?
- 龙芯2F笔记本安装gentoo系统
- python mp3转wav_python 录音,WAV转MP3
- 陈洁kiki宠粉节狂欢夜观看破千万!四年磨一剑将宠粉做到极致
- 吃土豆_nyoj_234(动态规划).java
- 网站数据采集器-文章采集工具-关键词文章采集工具
- 全家桶靠边站 用Windows自带功能解决3大难题
- mysql先过滤后分组_MySQL分组过滤
- 【Vulnhub靶场】Earth
- 两种把体积很大的Tif转为可以快速加载的MBT(mbtiles)的方法
- 4. iconfont 字体图标无法正常渲染显示
- PostgreSQL 12 `GRANT` 命令
- 正确识别中国电信ChinaNet及纯CN2、半程CN2