[[C语言日记① 初识C]]
有趣的恶搞小程序
定时关机
1 |
|
给两个数,返回最大值
1 | int main() { |
其他操作符
1 | - 负数 |
1 | int main() { |
原码反码和补码
概念
在电脑中,只要是整数,在内存中存储的都是二进制的补码
正数:
原码,反码,补码相同
负数:
原码)
直接按照正负写出的二进制序列
反码)
原码符号位不变,其他按位取反得到反码
补码)
反码+1得到补码
比如说-3
源码:1000000000000000000000000000011
反码1111111111111111111111111111100
补码1111111111111111111111111111101
常见关键字
auto
局部变量省略的关键字break
停止循环 或者 跳出casecase
选择switchchar
字符const
常量continue
跳过本次循环default
switch 的默认do while
先做再循环
1 | do{ |
double
双精度浮点else
否则enum
枚举extern
引入外部符号float
单精度for
循环goto
跳转到某行if
如果int
整数型long
长整数
register
寄存器关键字
计算机存储数据:
- 寄存器
- 高速缓存
- 内存
- 硬盘
cpu的速度越来越快,但是内存的访问速度跟不上
so-> cpu想要处理数据,取寄存器,高速缓存中拿
拿数据的过程:
- 内存->高速缓存->寄存器->cpu
1 | //如果使用量大,每次都要去内存中拿,所以效率会不理想 |
return
返回short
短整型signed
声明有符号数
1 | //int a = 10; |
unsigned
无符号数 这个数字永远都是一个正数
sizeof
计算类型大小static
静态 :
- 修饰的变量 生命周期会变长
- static 修饰全局变量 会改变变量的作用域-让静态的全局变量只能在自己所在的源文件内部使用 方法也一样
- 实现原理类似于 java 的 private 和 public
struct
结构体 简易的对象
switch
选择typedef
类型定义 类型重定义 也可以叫起别名
1 | typedef unsigned int u_int; //定义一个无符号数的整数类型为u_int |
union
联合体 公用体void
空volatile
不被优化的
volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int volatile vInt; 当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存
while
循环
循环十次:
1 | int b = 0; |
补充
关键字是不能和变量名冲突的
#define 定义常量和宏
定义常量:
1 |
|
定义宏
1 |
|
指针
内存
c语言操作地址指针方法:
1 | int a = 10; |
1 | int main() { |
指针内存的大小
指针大小:
32位机器 32个bit位序列
也就是4个字节
64位 则为64个bit
8个字节
vs2019 可在这里修改平台的位数
结构体
类似于java的类
*取到结构体指针
可以通过->属性名得到属性值
1 |
|
补充
在c中,数组的本质是个地址
所以pb->name=xxx
代码是不行的,我们可以这样修改name
1 |
|
[[C语言日记③ 分支和循环]]