重温c语言之,7天开整,就是随便的写写,第二天
一:操作符
除法:
如果都是整数,除数,被除数都是整数,那么结果:就是整数的商(没有小数部分的),例如:7/2=3;
如果除数或者被除数其中一个是浮点数,那么结果就是(条件是:能除尽的,并且小数在基础数据类型包含下的)完整的商(包含小数部分的):例如:7/2.0=3.500000;
如果想要在printf中,想要取小数点后1位,基本类型是:float----%.1f;如果是double----%.1lf,其他的就是类似(什么小数点后几位什么的,这个数字就是变换着来就行了)
取模:
取模操作符的两端都是整数
逗号表达式:
逗号隔开的一串表达式,特点:从左向右的依次计算,整个表达式的结果是最后一个表达式的结果,
例如:int a=10;int b=20;int c=0;int d=(c=a-2,a=b+c,c-3); d=5
二:关键字
typedef:
1.用于一个已有名字的数据类型,使其更新一个新的名字,让代码变得更加的简介,例如:在头部写上:typedef unsigned int unit;那么在main里面
unsigned int num1; 与unit num2;是相同的类型,只不过名字不相同,但是效果一样的
2.用于结构体上面,把结构体命一个新的名字,例如:
在main里面 :struct Node n;与 Node n2;的效果是一样的
static:
1.修饰局部变量
//在不使用static的时候
#include<stdio.h>
void test(){
int a=1;
a++;
printf("%d ",a);
}
int main(){
int i=0;
while(i<10){
test():
i++;
}
}
这个的结果就是:2 2 2 2 2 2 2 2 2 2
//在使用static的时候呢
#include<stdio.h>
void test(){
static int a=1;
a++;
printf("%d ",a);
}
int main(){
int i=0;
while(i<10){
test():
i++;
}
}
这个的结果就是:2 3 4 5 6 7 8 9 10 11
为什么会有这么大的差距呢,就是因为static 存在,static修饰局部变量的时候,局部变量出了作用域,不会销毁,本质上就是,static修饰局部变量的时候,该变量了变量的存储位置(由局部变量----->成为静态变量)。影响了变量的生命周期,生命周期变长,变成和程序的生命周期一样
| 栈区:局部变量 |
| 堆区: |
| 静态区:静态变量 |
2.修饰全局变量
static修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性。其他的源文件(.c)就不能再次使用这个全局变量,例如:
test1.c
int num=10;
test2.c
#include<stdio.h>
#include"test1.c"
int main(){
print("%d\n",num);
return 0;
}
这个结果就是:10
如果变成static修饰的全局变量(num)时,这个全局变量(num)就是从外部链接属性变成了内部链接属性,test2.c这个源文件不能使用test1.c的内部变量了,例如:
test1.c
static int num=10;
test2.c
#include<stdio.h>
#include"test1.c"
int main(){
print("%d\n",num);
}
结果:报错,原因,num这个变量没有定义且不存在
3.修饰函数
这个与修饰全局变量差不多,函数由原本的外部链接属性变成了内部链接属性
重温c语言之,7天开整,就是随便的写写,第二天的更多相关文章
- C语言的几种取整方法
C语言的几种取整方法 来源:http://blog.sina.com.cn/s/blog_4c0cb1c001013ha9.html 1.直接赋值给整数变量.如: int i = 2.5; 或 i = ...
- ubuntu语言支持打不开,点了没反应
ubuntu语言支持打不开,点了没反应 sudo dpkg-reconfigure locales
- 重温C语言小感
这周对我感触比较大的就是重温了下C语言,当然重点还是放到了指针那块,一看到指针就想到了链表,还有那个 指针申明,“函数指针”,“指针函数”, “使用指针实现数组降维数”,还有就是大学初学编程的点滴. ...
- Go语言类型(布尔、整型、数组、切片、map等)
1.基本类型 布尔类型:bool 注意:布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换. 整型:int8.byte(uint8).int16.int.uint.uintptr int.ui ...
- [日常] Go语言圣经--作用域,基础数据类型,整型
go语言圣经-作用域 1.一个声明语句将程序中的实体和一个名字关联,比如一个函数或一个变量 2.一个变量的生命周期是指程序运行时变量存在的有效时间段;声明语句的作用域对应的是一个源代码的文本区域,它是 ...
- C语言正整数除法向上取整
在网上发现一个简单的向上取整方法: 这里我们用<>表示向上取整,[]表示向下取整,那么怎么来表示这个值呢? 我们可以证明: <N/M>=[(N-1)/M]+1 (0< ...
- 重温C语言(1)----计算算术表达式的值
<C程序设计语言>练习题 5-10 编写程序 expr,计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令 expr 2 3 4 + * 计算表达式 ...
- 计算机二级-C语言-字符数字转化为整型数字。形参与实参类型相一致。double类型的使用。
//函数fun功能:将a和b所指的两个字符串分别转化成面值相同的整数,并进行相加作为函数值返回,规定只含有9个以下数字字符. //重难点:字符数字转化为整型数字. #include <stdio ...
- C语言程序设计:现代方法(第2版)第二章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- 【C语言探索之旅】 第一部分第四课第二章:变量的世界之变量声明
内容简介 1.课程大纲 2.第一部分第四课第二章:变量的世界之变量声明 3.第一部分第四课第三章预告:变量的世界之显示变量内容 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布 ...
随机推荐
- Java核心编程-第一卷
不要在程序中使用char类型 boolean: 两个值 true false 逻辑判断 整形布尔之间不能转换
- .NET8 Blazor 从入门到精通:(二)组件
目录 Blazor 组件 基础 路由 参数 组件参数 路由参数 生命周期事件 状态更改 组件事件 Blazor 组件 基础 新建一个项目命名为 MyComponents ,项目模板的交互类型选 Aut ...
- SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
一.CSM300概述 CSM300(A)系列是一款可以支持 SPI / UART 接口的CAN模块. 1. 简介 CSM300(A)系列隔离 SPI / UART 转 CAN 模块是集成微处理器. C ...
- 彻底解决ROS1安装问题,一键解决远离rosdep init 和rosdep update出错
彻底解决ROS1安装问题 相信很多小伙伴在刚入门ROS的时候就遇到ROS安装这个拦路虎. 普遍出错的环节在rosdep init 和rosdep update,由于要访问国外的站点就导致国内访问很容易 ...
- 默认情况下,CentOS 7上MySQL / MariaDB的存储位置在哪里?
Where is MySQL / MariaDB storage location by default on CentOS 7? No special configuration to the Ma ...
- java_父类子类
private 只有自身能访问自身 自身 同包子 不同包子类 同包类 其他类 可以访问 不能继承 不能继承 不能访问 不能访问 package/friendly/default == 不写 自身 同包 ...
- C 语言编译过程
编译过程 编译过程是将高级编程语言(如 C 语言)写成的源代码转换成机器可以执行的低级机器语言(通常是二进制代码)的过程.这个过程一般可以分为几个阶段: 预处理(Preprocessing): 预处理 ...
- pikachu靶场 越权(水平越权+垂直越权)
水平越权 A用户和B用户属于同一级别用户,但各自不能操作对方个人信息.A用户如果越权操作B用户个人信息的情况称为水行越权操作 三个用户 lucy/lili/kobe 密码都为123456 随便登录其 ...
- 深入浅出Stream流
Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利. 案例引入 在JAVA中,涉及到对数组.Collection等集合类 ...
- 计算机网络之TCP/IP协议简介
TCP/IP协议 简介 首先TCP/IP协议不只是表示TCP协议和IP协议两种协议,而是一个协议簇.协议簇是什么并不难理解,就是字面意思,一个由多个协议组合而成的集合体,其中最有代表性的就是TCP和I ...