您的位置:首页 > 编程语言 > C语言/C++

7_24日C语言|整型提升相关介绍

2017-07-26 15:11 375 查看
整型提升

int main()
{
char a = 10;
char b = 20;
char c = a+b;
return 0;
}

分析: 


 

char a 和 char b 属于截断; 

对于char c = a+b 来说属于整型提升再截断 



char a = -1;
unsigned char b = -1;
printf("%d\n",a);//-1
printf("%d\n",b);//255

对于char a = -1; 

10000000 00000000 00000000 00000001 //-1的原码 

11111111 11111111 11111111 11111110//-1的反码 

11111111 11111111 11111111 11111111//-1的补码 

截断后:11111111//-1 

整型提升:补符号位 

11111111 11111111 11111111 11111111//-1 

对于 unsigned char b = -1; 

10000000 00000000 00000000 00000001 //-1的原码 

11111111 11111111 11111111 11111110//-1的反码 

11111111 11111111 11111111 11111111//-1的补码 

截断后:11111111//-1 

整型提升:补符号位,由于是无符号数补0 

00000000 00000000 00000000 11111111//255 

算数转换 

当两者类型不同时,要将精度小的转为精度大的 



float f =3.14;
int num = f;// 精度丢失,隐式转换

N/A表示无结合性 

memset(起始地址,初始化字符,字节数);//内存操作函数在string.h中 

注意

//数组初始化
for(i = 0; i<sizeof(arr)/sizeof(arr[0]); i++)
arr[i]=1;
//memset初始化
memset(arr,1,sizeof(arr));
//两者效果是不同的,因为数组每个元素是4个字节,memset是对每个字节进行赋值,但初始化为0效果是相同的

函数的调用,为形式参数开辟空间,形参的实例化; 

传值调用,形参是实参的临时拷贝,形参的修改对实参无影响; 

传址调用,形参是实参的临时拷贝,形参的修改对实参有影响; 

实参主要有:变量,常量,表达式,函数等; 

形参在调用结束后销毁;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: