C语言,C++随记(1)

  1. **

C中难记的小知识

我初学C,C++所遇到的一些知识。
**
*

逆波兰式*

a+b 称为中缀式表达式
ab+ 称为后缀式表达式即逆波兰式
例: ab+cd---------->(ab)(cd)±---------->abcd+
**

关于小数如何转化为二进制

**
例 12``.25
整数部分12 除2取余化二进制 小数部分0.25乘2取整化为二进制,最终结果为
1100.01

数据类型转换

不同类型数据间不能混合运算,要运算必须将类型转换,有低精度,低取值范围转换成高精度,高取值范围。
double<---------------flaot
^
|
|
|
long
^
|
|
|
unsigned
^
|
|
|
int <----------char,short
*

运算符的三属性*

(1)优先级:一个表达式中出现多个运算符,由优先级决定运算顺序。
(2)结合方向:一个表达式中出现多个不同级运算符时,按优先级顺序来决定结合方向。
(3)操作数个数(目数):目数决定运算符需要几个数才能完成运算。

不同类型数据间的赋值

整型=实型 小数点后截断,保留整数。
实型=整型 整型后面+.0。
整型=整型 (1)短=长 (低位对齐,高位溢出)
(2)长=无符号短 (低位对齐,高位补0)
(3)长=有符号短 (低位复制,高位符号位扩展,即正数补0,负数补1)

位运算

& 按位与(有0则0 1&X=X 0&X=0)
|按位或 (有1则1 1|X=1 0&X=X )
^按位异或 (相同为0 不同为1 a异或b b转换为二进制 b中为1的部分 a与b相同位取反 b中为0的部分 a与b相同位不变 )
~取反 (0变为1 1变为0)
<<左移 (左移几位就是给数乘2的几次方)

右移 ( (1)对于无符号数,右移时左边高位移入0;
(2)对于有符号数,如果原来符号位为0(该数为正),则左边也是移入0,如果原来符号位为1(该数为负),则左边移入0还是1,要取决于算用的计算机系统。 移入0的称为“逻辑右移”,移入1的称为“算数右移”。

例题:找出a数组中只出现了一次的数

	#include<stdio.h>
> 				int main()
> 				{
> 					int a[]={1,3,2,5,4,6,7,8,9,6,7,9,8,5,3,2,1};
> 					int num=0;
> 					for(int i=0;i<sizeof(a)/sizeof(a[0]);i++)
> 				{
> 					num=num^a[i];	
> }
> 				printf("%d\n",num);
> }

2.## C与C++的一些不同处

**

定义常数

**
C中可以使用预处理命令来定义常数,但C++中一般不建议使用,C++中使用const来定义常数,如const int i=10;

**

左值与右值

**
表达式或者变量要有左值即为该表达式或者变量要有存储空间。
表达式或者变量要有右值即为该表达式或者变量要有值。
C中:++i,i++这些只有右值而没有左值。
C++中:++i既有左值也有右值;而i++只有右值。
并且C中的赋值表达式没有左值而C++中有 如(a+b)在C中不能写为(a+b)=c,而C++中可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值