C语言拾遗(一)
越来越体会到C语言的重要性,不管是在计算机底层的理解上,还是在算法数据结构上,所以遂决定重新拾起C语言,不定期更新一些知识点。
推荐博客:http://blog.csdn.net/itcastcpp
1.程序编译链接原理
预处理:.c -> .i
gcc -E hello.c -o hello.i
编译:.i / .c -> .s
gcc -S hello.i -o hello.s
汇编:.s -> .o
gcc -c hello.s -o hello.o
链接:.o -> 可执行程序app
gcc hello.o -o app

2.两种存储法:
小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)(我们平时用的pad和手机笔记本 )
(intel/ARM)
0x表示十六进制
数值:0x12 34 56 78在小端存储器里如何存储
0x8003 0x12
0x8002 0x34
0x8001 0x56
0x8000 0x78
1 BYTE = 8bit
大端存储法——高地址存低字节,低地址存高字节(高存低,低存高)
(IBM大型机/网络字节序)
数值:0x12 34 56 78在小端存储器里如何存储
0x8003 0x78
0x8002 0x56
0x8001 0x34
0x8000 0x12
3.进制转换
10进制: 0,1,2,3,4,5,6,7,8,9,10
2进制: 0,1
8进制: 0,1,2,3,4,5,6,7
16进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
八进制开头:0
十六进制开头:0x
十进制开头:什么都不跟

十进制:89 对应的二进制 1011001
89 .... 1
44 .... 0
22 .... 0
11 .... 1
5 .... 1
2 .... 0
1 .... 1
1011001
1+0+0+8+16+0+64 = 89
bit位
8bit = 1BYTE =》每个字节拥有一个地址
0x8003
0x8002
0x8001
0x8000
1 和 -1
原码 反码 补码
1 0000 0001 0000 0001 0000 0001 正数的反码,补码都等于原码
-1 1000 0001 1111 1110 1111 1111 负数的补码等于把反码加1
0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000
如果(0 等于 -0)
执行aaaa;
否则
执行bbbb;
97 =》 97 ... 1 => 0110 0001
48 ... 0
24 ... 0
12 .... 0
6 ... 0
3 ... 1
1 ... 1
原码 反码 补码
-31 => => 31 => 31 ... 1 => 0001 1111 => 1001 1111 => 1110 0000 => 1110 0001
15 ... 1
7 ... 1
3 ... 1
1 ... 1
char b = 1; => (-128~127)
unsigned char a = 129; => (0~255)
s
0000 0000
1000 0001
1111 1111
int
unsigned int -> (0~2^32-1)
char b = 'x';
int c = 10;
'x' => 120 => 0111 1000
10 => 1010
.
.
.
0x8003
0x8002
0x8001
&b => 0x8000 1BYTE 0111 1000
.
.
.
0x7003 0000 0000 => 0x00
0x7002 0000 0000 => 0x00
0x7001 0000 0000 => 0x00
&c => 0x7000 0000 1010 => 0x0A
printf("&c = %p\tc = %d", &c, c);
'x' => 120
'\a'
'"'
345
"hello" => 'h' 'e' 'l' 'l' 'o' '\0'
'a' == "a"
"a" = "c";
"123" => 123
'1' '2' '3' '\0'
'1' - '0' = 1
1*10 + '2'-'0' = 12
12*10 + '3'-'0' = 123
int a = 5;
a % 3 => 2
a / 2 => 2
float a = 5.0
a % 3 => ???报错
a / 2 => 2.5
C语言拾遗(一)的更多相关文章
- C语言拾遗——strtok
C语言拾遗——strtok 今天刷PAT的时候用到了这个strtok函数,顺手就记录一下 strtok函数包含于头文件string.h 语法:char *strtok( char *str1, con ...
- C语言拾遗
1. 没C++那么恶心的const C语言中的const修饰符用于修饰一个变量是const属性的.被C语言的const修饰的变量具有只读属性,并且不能被修改. const修饰的变量 != 常量,con ...
- C语言拾遗--static
C程序一直由下列部分组成: 正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里. ...
- C语言拾遗——inttypes.h
今天偶然间看到这个头文件inttypes,好奇有什么用,去找度娘玩了一波,发现这头文件挺有意思的. 这个头文件适配于C99标准,它提供整数输入的各种进制转换的宏,这是在Ubuntu上扣下来的代码(wi ...
- C语言拾遗——sscanf
今天写题用到了sscanf,怕忘赶紧记录一下 去百度了一下这玩意的函数原型好像是长这样的,微软上扣下来的 int sscanf( const char *buffer, const char *fo ...
- c语言,数据类型转换
在执行算术运算时,计算机比C语言的限制更多.为了让计算机执行算术运算,通常要求操作数有相同的大小(即位的数量相同),并且要求存储的方式也相同.计算机可能可以直接将两个16位整数相加,但是不能直接将16 ...
- Go语言核心36讲(导读)--学习笔记
目录 开篇词 | 跟着学,你也能成为Go语言高手 导读 | 写给0基础入门的Go语言学习者 导读 | 学习专栏的正确姿势 开篇词 | 跟着学,你也能成为Go语言高手 Go 语言是由 Google 出品 ...
- iOS-C基础
iOS开发系列--C语言之基础知识 概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(i ...
- 自学导航页(待续ing)
1 博客导航1.1 linuxlinux全线教程–提供了linux教程,服务器管理教程,BSD教程,还有编程语言(C/Java/Python/Perl),以及网络等全栈学习教程 1.2 存储技术NoS ...
随机推荐
- 优质Android小部件:索尼滚动相册
虽然骚尼手机卖的不怎么样,但是有些东西还是做的挺好的,工业设计就不用说了,索尼的相册的双指任意缩放功能也是尤其炫酷.其桌面小部件滚动相册我觉得也挺好的,比谷歌原生的相册墙功能好多了,网上搜了一下也没发 ...
- IOS RunLoop浅析 二
上一篇我们说了runloop 的几种模式,那么我们在模式中又要做些什么呢??? 模式中有三个模块: 事件源(输入源) Source Source: 按照官方文档分类 Port-Based Custom ...
- FastDFS+Nginx(单点部署)事例
FastDFS是由淘宝的余庆先生所开发,是一个轻量级.高性能的开源分布式文件系统,用纯C语言开发,包括文件存储.文件同步.文件访问(上传.下载).存取负载均衡.在线扩容.相同内容只存储一份等功能,适合 ...
- jQuery对表单的操作
表单应用 一个表单有3个基本组成部分: 表单标签:包含处理表单数据所用的服务器端程序URL以及数据提交到服务器的方法 表单域:包含文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上 ...
- Linux系统安装Apache 2.4.6
Apache简介 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广 ...
- SQL SERVER 2012链接到SQL SERVER 2000的问题解决案例
前几天在在桦仔的SQLSERVER走起微信公众帐号看到一篇文章MS SQL Server2014链接MS SQL Server 2000,当时手机上囫囵吞枣看了个大概,知道是由于SQL SERVER ...
- MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!
回到目录 递归递归我爱你!只要你想做,就一定能成功! 从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死, ...
- 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群
需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...
- Red Hat Enterprise Linux Server 6.5安装GCC 4.9.2
现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.本文以在RedHat L ...
- Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机.一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在 ...