C基础——常量变量笔记

程序编译链接原理
预处理:.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

gedit hello.c

小端存储法——高地址存高字节,低地址存低字节(高存高,低存低)
(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

进制转换
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

百 十 个
1 2 3

1x10^2 + 2x10^1 + 3x10^0

0 1 0
0x2^2 + 1x2^1 + 0x2^0 = 2

1100 1010
0+2+0+8+64+128=202

二进制: 000 001 010 011 100 101 110 111 001000
十进制: 0 1 2 3 4 5 6 7 8
八进制: 0 1 2 3 4 5 6 7 10

二进制: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
十进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F

二进制:1010 0001 1000
十六进制:A 1 8

十六进制:3D7
二进制: 0011 1101 0111

八进制:11
二进制:001 001

37
八进制开头:0
十六进制开头:0x
十进制开头:什么都不跟

八进制:0777
十六进制:0xffff8000

5进制:23 = 3x5^0 + 2x5^1 = 13

8 4 2 1

2^3 2^2 2^1 2^0

1000 0100 0010 0001

0111

十进制: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

49 ... 1
24 ... 0
12 ... 0
6 ... 0
3 ... 1
1 ... 1

0011 0001
0x31

0567
101 110 111

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

1.打印基本数据类型sizeof大小
2.利用vs2013学会查看内存, 查看变量地址和地址里的数值

时间: 2024-10-12 20:59:46

C基础——常量变量笔记的相关文章

php基础-常量-变量相关的基础函数

注释语句 //单行 # 单行 /* 多行注释 */ /** * 文档注释 * */ 常量定义 自定义常量 常量名区分大小写 系统的魔术常量不区分大小写 __DIR__  __dir__ 变量定义 变量名是区分大小写 变量名声明时用$符号开头, 而且要符合变量名的命名规则 $i; var_dump($i); $i = 'ok'; var_dump($i); $i = "Hello"; var_dump($i); $i = 20; var_dump($i); $i = 20.5; var_

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw

Go基础之变量和常量

Go基础之变量和常量 标识符和关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头. 举几个例子:abc, _, _123, a123. 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符. 关键字和保留字都不建议用作变量名. Go语言中有25个关键字: break default func interface select case defer go map stru

swift学习第一天---常量变量基础数据类型

1 import Foundation 2 3 /** 4 * 1.常量 变量 5 知识要点:常量的定义用let 变量的定义用var 6 常量一旦定义便不可再更改. 7 变量定义之后可以在定义之后的程序中任意地方进行修改. 8 */ 9 // 常量的定义 10 let constants1:Int = 10 11 12 print("constants1 = \(constants1)") 13 14 // 变量的定义 15 var variables1:Int = 11 16 17

Python基础-2 变量与常量

变量与常量 变量:在程序运行过程中,值会发生变化的量 常量:在程序运行过程中,值不会发生变化的量 无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值. 这里有一点需要注意的是,在python中是不需要声明类型的.这是根据Python的动态语言特性而来.变量可以直接使用,而不需要提前声明类型. 变量的定义 Python 中的变量不需要声明类型 a = 4 b = "hello" c = [1,2] d = (1,2) 这些变量都是不需要声明它的类型的,在C和Java中是

黑马程序员_JAVA 基础加强学习笔记

一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();  如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数. 如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数. 2.final特点

ARM基础知识学习笔记

/*****************数电知识*******************/ PN结(Positive-Negative) 三极管:BJT(双极结型三极管Bipolar Junction Transistor)               FET(场效应管Field Effect Transistor)          (单极结型) 1.MOSFET (金属氧化物半导体Metal Oxide Semiconductor FET)               2.JFET(结型Junct

C++基础知识学习笔记

基本语法 C面向过程思想:程序=(数据结构)+(算法) 数据结构与算法分离,以算法(函数)为主. C++面向对象思想:程序=(数据结构+算法) 数据结构(属性)与算法(操作)绑成一个类,定义一个个对象对象=(数据结构+算法)  ,程序=(对象+对象+对象+--) 面向对象程序设计的程序员有两类:1.面向对象应用程序设计2.类库的设计 头文件:类的声明            ---类的外部接口       (成员函数在类声明中实现时,一般很简短,默认为内联函数)源文件:类的成员函数定义     -

SQL Server2012 T-SQL基础教程--读书笔记(5-7章)

SQL Server2012 T-SQL基础教程--读书笔记(5-7章) SqlServer T-SQL 示例数据库:点我 Chapter 05 表表达式 5.1 派生表 5.1.1 分配列别名 5.1.2 使用参数 5.1.3 嵌套 5.1.4 多个引用 5.2 公用表表达式 5.2.1 分别列别名 5.2.2 使用参数 5.2.3 定义多个CTE 5.2.4 CTE的多次引用 5.2.5 递归CTE 5.3 视图 5.3.1 视图和ORDER BY 子句 5.3.2 视图选项 5.4 内嵌表