C/C++语法知识精华整理(1)-左值与右值、变量与常量、 define与const、Printf特点、补码与阶码、位运算等
来源:互联网 发布:sql中delete和drop 编辑:程序博客网 时间:2024/05/16 12:26
1.左值与右值的区别
左值可以放在左边赋值的值。右值可以放在右边的值。
左值,没有内存实体的左值不存在的。Int a=3;
右值,可以有内存实体,也可以没有内存实体. A+1,&a,100,右值,都在寄存器。
Int b=a,在内存实体
CPU处理计算,内存是存储的。
寄存器的内容不可以取内存地址 &(a+1)非法。
赋值的时候,二进制数据在CPU寄存器中产生,赋值的时候,实际上传递二进制的过程。
char ch = -1; //1111 1111
int num = ch;// 1111 1111 1111 1111 1111 1111 1111 1111
printf("%d", num);
//小字节数据转换为大字节数据的时候,填充符号位
掌握内嵌汇编
//data = num + 4;
_asm
{
mov eax,num //num移动到eax
add eax,4 //eax 的值自动+4
mov data,eax //eax的值移动到data
}
2.变量的赋值原理
变量的赋值就是拷贝二进制,内存之间不可以直接拷贝,必须通过CPU,
变量的值发生变化,就是变量的那一段内存,存放不同的二进制数据。
3.Define与const的区别
Define与const最大差别是
#define K 100.0
const int Knum = 100.0;//赋值号会自动进行数据类型转换
const是伪常量,可以改变它的值,不可以用于数组,define可以
改变伪常量:
const int num = 10;//伪常量
int *p = (int *)#//C++强类型
*p = 3;//指针赋值,const不靠谱
printf("%d", num);
const常量只有在初始化的时候是左值,const常量有内存实体
int data = 10;
const int num=20;//常量必须初始化,可以接受任何赋值
const int num = data;//编译的时候避免出错,避免对不该赋值的赋值
理解下C++强类型,C弱类型,区别是赋值的时候,C++会严格检测类型。
const int Knum = 100.0;//赋值号会自动进行数据类型转换
4.Printf特点
printf不会自动进行数据类型转换,打印的变量必须匹配打印方式
printf("%d,%d", 10.9, 10);//printf,第一个错误,第二个连带错误
5.指针数据类型
指针是一种数据类型,类型决定了大小,决定了二进制数据的解析方式,指针变量存储的是地址,因为类型,同一个地址也有所不同。
int num = 100;
double *p1 = #
int *p2 = #
float *p3 = #
printf("%f\n", *p1);
printf("%d\n", *p2);
printf("%f\n", *p3);
6.Long long和long double
Long long用于存储大整数重点
Longlong打印用%lld
long,int32位,64位平台等价,16位平台int与short等价
7.处理浮点数,处理整数字符的极限
极限的意义
//所有的数据操作,赋值,计算,极限范围之内不会错误
//极限范围之外,偶尔正确,一定出错。
8.补码阶码概念
补码存储负数,阶码存储实数
补码吧-0当作尾部最后一个数,可以多表示一个数据
printf不会自动进行数据类型转换。
%d是有表示范围的。
9.变量在内存中的存储
所有的计算机,负数手机电脑都是补码存储,实数是阶码存储。
10.补码
补码理解负数的存储方式,赋值方式,printf不经转换直接解析的方式
数据转换的时候,无符号数据填充0,有符号数据填充符号位。
补码的加法速度要快于原码
补码与数据极限的关系,补码的-0多存储一个数据。
11.指针的高级处理方式
指针的高级处理方式,内存检索,改变指针的类型,检索任意数据
指针的类型决定了长度,决定了解析方式,指针变量的值仅仅存储地址
12.位运算
|运算符
// 1|1 -> 1 0|1 -> 1
// 1|0 ->1 0|0->0
//0101 1010
//1111 0000
//1111 1010 //指定的字段置1
&运算符
// 11->1 01->0
//10->0 00->0
//0101 1110;
//0000 1111
//0000 1110 //某一段清零用&
^异或运算符
// 1^1 0^0 0
// 1^0 0^1 1
//1010 0101
//1111 0000
//0101 0101 //指定的字段反转,交换数据
~取反运算符
unsigned char ch1 = ~0;
//0000 0000
//1111 1111 255
左移等价于×2,右移等价于/2
异或:指定的字段反转,交换数据
- C/C++语法知识精华整理(1)-左值与右值、变量与常量、 define与const、Printf特点、补码与阶码、位运算等
- C/C++语法知识精华整理(2)-栈与堆、内存四大区域、 全局变量、线程技术、位字段、函数返回值副本机制等
- C 左值与右值
- 【C语言】左值与右值
- C/C++中define定义的常量与const常量
- 5、位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
- C/C++: const常量与define宏定义的区别
- C语言基础 按位运算符 按位与,或,非,左移,右移
- C++-->变量、常量与运算符
- C/C++定义常量#define与const比较
- C/C++定义常量#define与const比较
- 浅尝C++——const与#define定义符号常量
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- 8.3省选模拟总结
- 9. CSS 背景属性
- myeclipse工程里可以运行,但cmd 运行jar包报错
- Python开发--filecmp
- SGU_495_KidsAndPrizes
- C/C++语法知识精华整理(1)-左值与右值、变量与常量、 define与const、Printf特点、补码与阶码、位运算等
- 放苹果(递归)
- 微信智能硬件
- [HDU1016]Prime Ring Problem
- Android Studio升级到最新v1.3版后配置GitHub提示Gradle版本不支持的问题
- 8.4总结
- Python开发--stat
- 2015.8.4
- jsp&servlet的登陆界面以及增删改查功能的实现