10.12
来源:互联网 发布:程序员的一天小品 编辑:程序博客网 时间:2024/06/06 15:00
int a =-12;
printf("%u",a);
//1294947284
当我们用%u格式控制符输出a时,计算机将会把它识别为一个无符号的正整数,此时最高位上原本作为符号位的1将被当做计数位,同时因为整数原码,反码,补码,是一样的,所以直接输出。
类型转换
当不同的类型参与运算时,低字节数据类型自动转换为高字节数据类型,例如 3/1.5 打印的结果将是2.0000.
当给数据赋值时,等号右边的数据类型自动转换成等号左边的的数据类型,例如 int a=1.3,打印结果将是1;
强制转换:
一般形式:(类型名)(表达式)
例子:(int)(x+y) 把x+y的结果强制转换为int类型
(int)x+y 把x的结果转换为int类型,然后在加上y
(double)(3/2)=1.0000 3是整数型,2是整数型,3/2的结果也是整数型。
精度缺失:发生多字节数类型强制转化为少字节数类时,
unsigned short a=256;
char b =a;
prinf(“%d,”b);
0000 0001 0000 0000
0000 0000 打印结果
发生少字节数类型强制转化为多字节数类时,多出的位需要补0或补符号位,取决于多字节的类型是有符号还是无符号。如果是无符号统一补0,如果是有符号,则将低字节的最高位当做符号位去补。
char a = 129;
short b = a;
printf("%d", b);
a 129: 10000001 char占用一个字节
b -------- -------- short占用两个字节
-------- 10000001 后面八位直接搬进来
因为b是有符号类型,所以高八位需要补符号位,而此时符号位是1
11111111 10000001
注意:计算机存储是存的二进制补码,所以读取数据还需要把补码变更为原码,正数不用管,负数需要遵循转换原则;
原码=反码取反
反码=补码-1;
反码得到原码:10000000 11111111 即-127;
运算符:
算术运算符:+-*/,++,——;%;
注意事项:*不可以省略;%只可以用来整形数据之间,运算结果的符号与被除数符号结果相同。
例子:
9%7=2;
3%(-5)=3 3/(-5)=0···3 0*(-5)=3
int a=1234 将1234改为4321:(拆解,加权)
prtinf(“%d”,a%10*1000+a%100/10*100+a%1000/100*10+a/1000);
操作数:参与运算的对象
逻辑运算符:丨
printf("%u",a);
//1294947284
当我们用%u格式控制符输出a时,计算机将会把它识别为一个无符号的正整数,此时最高位上原本作为符号位的1将被当做计数位,同时因为整数原码,反码,补码,是一样的,所以直接输出。
类型转换
当不同的类型参与运算时,低字节数据类型自动转换为高字节数据类型,例如 3/1.5 打印的结果将是2.0000.
当给数据赋值时,等号右边的数据类型自动转换成等号左边的的数据类型,例如 int a=1.3,打印结果将是1;
强制转换:
一般形式:(类型名)(表达式)
例子:(int)(x+y) 把x+y的结果强制转换为int类型
(int)x+y 把x的结果转换为int类型,然后在加上y
(double)(3/2)=1.0000 3是整数型,2是整数型,3/2的结果也是整数型。
精度缺失:发生多字节数类型强制转化为少字节数类时,
unsigned short a=256;
char b =a;
prinf(“%d,”b);
0000 0001 0000 0000
0000 0000 打印结果
发生少字节数类型强制转化为多字节数类时,多出的位需要补0或补符号位,取决于多字节的类型是有符号还是无符号。如果是无符号统一补0,如果是有符号,则将低字节的最高位当做符号位去补。
char a = 129;
short b = a;
printf("%d", b);
a 129: 10000001 char占用一个字节
b -------- -------- short占用两个字节
-------- 10000001 后面八位直接搬进来
因为b是有符号类型,所以高八位需要补符号位,而此时符号位是1
11111111 10000001
注意:计算机存储是存的二进制补码,所以读取数据还需要把补码变更为原码,正数不用管,负数需要遵循转换原则;
原码=反码取反
反码=补码-1;
反码得到原码:10000000 11111111 即-127;
运算符:
算术运算符:+-*/,++,——;%;
注意事项:*不可以省略;%只可以用来整形数据之间,运算结果的符号与被除数符号结果相同。
例子:
9%7=2;
3%(-5)=3 3/(-5)=0···3 0*(-5)=3
int a=1234 将1234改为4321:(拆解,加权)
prtinf(“%d”,a%10*1000+a%100/10*100+a%1000/100*10+a/1000);
操作数:参与运算的对象
逻辑运算符:丨
阅读全文
0 0
- 10.12
- 10.12
- 10.12
- 10.12
- 10.12
- 10.12
- 10.12
- 10.12
- 10.12.19 ~ 10.12.26
- 10.12流水
- 10.12下午
- 习题10.12
- 10.12.5
- 10.12.5
- 10.12.8
- 10.12.21
- 10.12DataView
- 10.12-10.25
- bashrc for cadence
- Standard C/C++ on Windows
- Mac下切换到Root用户
- BZOJ4260 Codechef REBXOR trie
- 大学第一堂课程”打印helloworld“
- 10.12
- poj 1067 取石子游戏(威佐夫博弈)
- 天弘基金移动App客户端架构优化之路
- Okhttp简单的二次封装
- 【Python】将Linux 上的Python2.7 升级成Python3.6
- [Python] pip国内源
- Cron表达式详解
- 微信Android客户端架构演进之路
- bzoj1864 [Zjoi2006]三色二叉树 树上DP