黑马程序员——C语言-2:内存剖析
来源:互联网 发布:网络攻防大赛平台 编辑:程序博客网 时间:2024/06/06 09:21
————————java培训、Andoroid培训、IOS培训、.Net培训、期待与您交流!————————
进制
int number=10;//默认情况下是10进制int number2=0B1100;//0b或者0B开头是二进制int number3=014;//0开头是8进制printf("%d",number);//%d表示按10进制输出number值
%d表示以带符号的10进制输出整数
%o表示不带符号的8进制输出整数
%x表示不带符号的16进制输出整数
%c表示输出一个字符
%s表示输出一个字符串
%u表示不带符号位的10进制形式输出整数
%f表示以小数形式输出单、双精度数,默认输出6位小数
%e表示以标准形式输出单、双精度数,数字部分小数位数为6位
%o表示不带符号的8进制输出整数
%x表示不带符号的16进制输出整数
%c表示输出一个字符
%s表示输出一个字符串
%u表示不带符号位的10进制形式输出整数
%f表示以小数形式输出单、双精度数,默认输出6位小数
%e表示以标准形式输出单、双精度数,数字部分小数位数为6位
取值范围
类型 存储空间(64位编译器) 取值范围 char 1B(8bit) -2的7次方——2的7次方-1 int 4B(32bit) 2的31次方——2的31次方-1 float 4B(32bit) 2的31次方——2的31次方-1 double 8B(64bit)1.7*10的-308次方——1.7*10的308次方
-1.7*10的308次方——3.4*10的-38次方
位运算
&:对应的两个二进制位均为1时,结果位为1,否则0。与1相&保持原位,与0相&就变为0
比如9&5等价为1001&0101=1
|:对应的两个二进制有一个为1时,结果位为1,否则0。
比如9|5等价位1001|0101=1101,结果为13
^:对应的二进制位相异时,结果为1,否则为0
比如9^5等价为1001^0101=1100,结果为12
相同数值进行异或,结果为0,任何数值和0异或还是原来的数值,a^b^a=b
~:将对应的二进制位按位取反
比如~9等价为~0000 0000 0000 0000 0000 0000 0000 1001
则补码为1111 1111 1111 1111 1111 1111 1111 0101,转换为10进制为-10
<<:左移
比如9<<1,就是9*2=18,9<<2,就是9*2*2=36,9<<n就是9*2的n次方
>>:右移
比如8>>1,就是8/2=4,8>>2,就是8/2/2=2,8>>n就是8/2的n次方
代码实现
int main(){ printf("%d\n",9&5);//与运算 1 printf("%d\n",9|5);//或运算 13 printf("%d\n",9^5);//异或 12 printf("%d\n",~9);//取反 -10 printf("%d\n",9<<1);//左移 18 printf("%d\n",8>>2);//右移 2 return 0;}
使用位异或运算符交换两个变量的值(不使用第三方变量)
第一种方法:
int a=10; int b=11; printf("a=%d,b=%d\n",b,a);
第二种方法:
int a=10; int b=11; a=b-a; b=b-a; a=b+a; printf("a=%d,b=%d\n",a,b);
第3种方法:
int a=10; int b=11; a=a^b; b=a^b; a=a^b; printf("a=%d,b=%d\n",a,b);
用&判断奇偶性
int a=11; if(a&1) { printf("这是一个奇数\n");//a&1==1 } else { printf("这是一个偶数\n");//a&0==0 }
输出整数在内存中的二进制形式
void printBinary(int n){ int temp=(sizeof(n)<<3)-1;//根据编译器去决定位数 int value; while(temp>=0) { value=n>>temp&1; printf("%d",value); if(temp%4==0) { printf(" "); } temp--; } printf("\n");}
大写转换
char upper(char c){ if(c>='a'&&c<='z') return c-('a'-'A'); return c;}void main(){ char cc=upper('w'); printf("%d\n",cc);}
char类型
常见错误
char c=a;char c="a";char c='男';char c='ABCD';
使用
printf("%d",'a');printf("%c",68);
转义字符
\n:回车换行
\t:跳到下一个TAB位置
\\:一个反斜线字符
\':一个单引号字符
0 0
- 黑马程序员——C语言-2:内存剖析
- 黑马程序员——C语言—内存剖析
- 黑马程序员—C语言笔记—内存剖析
- 黑马程序员——C语言内存剖析
- 黑马程序员——C语言内存剖析
- 黑马程序员——C语言基础---内存剖析
- 黑马程序员 -- IOS C语言 内存剖析2
- 黑马程序员——C语言——函数、内存剖析
- 黑马程序员-IOS-C语言基础-函数及内存剖析
- 黑马程序员---C语言之进制与内存剖析
- 黑马程序员 -- IOS C语言 内存剖析1
- 黑马程序员——08C语言内存分析
- 黑马程序员—C语言—内存管理理解
- 黑马程序员——c语言基础:内存管理
- 黑马程序员——C语言内存管理
- 黑马程序员——C语言和OC内存管理
- 黑马程序员-iOS基础-C语言基础(四)内存剖析、数组、字符串
- C语言基础—内存剖析
- UILabel 使用
- [leetcode]Validate Binary Search Tree (判断有效二叉搜索树 C语言实现)
- system.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权
- win7下,Ant 配合yuicompressor对js和css进行合并、压缩、拷贝处理
- [汇编]_[初级]_[VS2010搭建汇编开发环境win32和x64]
- 黑马程序员——C语言-2:内存剖析
- grunt快速入门
- hdu 3579 Hello Kiki(求解线性同余模方程组的正整数解模板题)
- 屡次失败面试的心理安慰
- NSString 计算显示范围
- 【好程序员笔记分享】——继承
- Android 中this、 getApplicationContext()、getApplication()之间的区别
- Grunt打造前端自动化工作流
- 黑马程序员——高新技术---反射