C语言笔记
.c是C语言源文件,在编写代码的时候创建
.o是目标文件,在编译成功的时候产生 .obj
.out是可执行文件,在链接成功的时候产生
工具:clang编译器(Xcode3 gcc Xcode4 LLVM (clang))
指令:cc -c 文件名.c 【Tab键】
编译 成功,会生成一个.o目标文件
链接:其实就是把我们的.o目标文件跟系统自带的函数库合并在一起,生成一个可执行文件见
Touch 02-我的第二个C语言程序.c【创建文件】
1> %d\%i 整数(int)
2> %f 小数(float double)
3> %c 字符(char)
4> %p 输出地址
5> & 地址运算符
Sizeof 作用
用来计算一个变量或者一个常量,一种数据类型所占的内存字节数
基本形式
Sizeof(常量\变量)
Sizeof 变量\常量
Sizeof (数据类型)
不能是sizeof数据类型
列:
Double a;
Int b=sizeof(a);
Printf("%d\n:",b);
输出b:8 表示8个字节
scanf接受输入
这也是在stdio.h中声明的一个函数,因此使用前必须加入#include <stdio.h>。
调用scanf函数时,需要传入变量的地址作为参数,scanf函数会等待标准输入设备
(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量
- 注意:数值之间的分隔符是任意的,不一定要用中划线-,可以是逗号、空格、星号*、井号#等等,甚至是英文字母
// 逗号,
scanf("%d,%d,%d", &a, &b, &c); // 输入格式:10,14,20
// 井号#
scanf("%d#%d#%d", &a, &b, &c); // 输入格式:10#14#20
// 字母x
scanf("%dx%dx%d", &a, &b, &c); // 输入格式:10 x14x20
运算符的优先级(从高到低)
- 关系运算符中==、!=的优先级相等,
- <、<=、>、>=的优先级相等,
- 且前者的优先级低于后者:2==3>1
- 如果在程序中,要改变运算顺序,可以使用()。
优先级 |
描述 |
运算符 |
1 |
括号 |
()、[] |
2 |
正负号 |
+、- |
3 |
自增自减,非 |
++、--、! |
4 |
乘除,取余 |
*、/、% |
5 |
加减 |
+、- |
6 |
移位运算 |
<<、>>、>>> |
7 |
大小关系 |
>、>=、<、<= |
8 |
相等关系 |
==、!= |
9 |
按位与 |
& |
10 |
按位异或 |
^ |
11 |
按位或 |
| |
12 |
逻辑与 |
&& |
13 |
逻辑或 |
|| |
14 |
条件运算 |
?: |
15 |
赋值运算 |
=、+=、-=、*=、/=、%= |
16 |
位赋值运算 |
&=、|=、<<=、>>=、>>>= |
内存-进制
1 // 输出整数的二进制形式 2 void putBinary(int n) 3 { 4 int bits = sizeof(n) * 8; 5 while (bits-->0) { 6 printf("%d", n>>bits&1); 7 if (bits%4==0) printf(" "); 8 } 9 printf("\n"); 10 }
- signed和unsigned
1> 首先要明确的:signed int等价于signed,unsigned int等价于unsigned;
2> signed和unsigned的区别就是它们的最高位是否要当做符号位,并不会像short和long那样改变数据的长度,即所占的字节数。
- signed:表示有符号,也就是说最高位要当做符号位,所以包括正数、负数和0。其实int的最高位本来就是符号位,已经包括了(正负数和0)了,因此signed和int是一样的,signed等价于signed int,也等价于int。signed的取值范围是-231 ~ 231 - 1
- unsigned:表示无符号,也就是说最高位并不当做符号位,所 以不包括负数。在64bit编译器环境下面,int占用4个字节(32bit),因此unsigned的取值范围是:0000 0000 0000 0000 0000 0000 0000 0000 ~ 1111 1111 1111 1111 1111 1111 1111 1111,也就是0 ~ 232 - 1