再论整型
整型
2023-09-11 14:15:07 时间
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned long long un_var_long = 0;
long long var_long = 0;
unsigned int data_un = 0x8000;
int data_si = 0x8000|0xffff0000;
//int data_si = 0x7FFF;
printf("data_si = %d\n",data_si);
printf("data_un = %u\n",data_un);
var_long = (long long)data_si *762962736 / 100000000;
printf("var_long = %lld\n",var_long);
un_var_long = (unsigned long long)(0x10000 - data_un)*762962736 / 100000000;
printf("un_var_long = %lld\n",un_var_long);
int sian_ddd = -124;
printf("sian_ddd = %x\n",sian_ddd);
var_long = -12399999999456;
printf("var_long = %lx\n",var_long);
//截断后,依然保留了符号
sian_ddd = (int)var_long;
printf("sian_ddd = %x\n",sian_ddd);
printf("long long = %x\n",sizeof(long long));
sian_ddd = 0x80000000;
printf("sian_ddd-- = %d\n",sian_ddd);
sian_ddd = 0x7fffffff;
printf("sian_ddd++ = %d\n",sian_ddd);
sian_ddd = 0xE667A220;
printf("sian_ddd e6 = %d\n",sian_ddd);
printf("Hello world!\n");
return 0;
}
内存截图:只运行到sian_ddd = 0x80000000;之前的情况下。后续情况自行推导。
0x61fe04: 20 a2 67 e6 = -429415904
0x61fe08: 00 80 ff ff = -32768
0x61fe0c: 00 80 00 00 = 0x8000
0x61fe10: 20 a2 67 e6 b8 f4 ff ff = -12399999999456
0x61fe18: 97 d0 03 00 00 00 00 00 = 250007
变量信息
小结:
long long 转换为int类型是直接截断的,因此不确保int的符号位,因此需要特别注意,测试环境是gcc,x86的架构,因此是小端模式。
内存的信息都是0101,但是编译器怎么来解析一个数据,就根据定义的类型:类型大小,整型,浮点,有符号、无符号。而且是根据补码来解析的
相关文章
- python中,如何将字符串转换为数字(将数字转换为整型),字符串的10转换为整型的10,10.5转换为10
- 如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型?
- 支军队正在进行阅兵前的训,训陈前队列排队是一个难题。该队列是一个n*n的方阵,排队要求是后一排的最低的不比前一排最高的低,同时要求偶数行从小到大排列,奇数行从大到小排列(行数从第0行开始,O为偶数)。输λn及η*n个身高数据〈身高数据为整型),按要求处理后输岀 n队列身高数据(每个身高数据占4个字符宽度)。
- 【C语言】整型提升与算术转换
- C生万物 | 揭开【整型提升】神秘面纱
- 整型数组处理算法(十三)请实现一个函数:凑14。[风林火山]
- 整型数组处理算法(十一)请实现一个函数:线段重叠。[风林火山]
- 整型数组处理算法(十二)请实现一个函数:最长顺子。[风林火山]
- 华为OD机试 - 整型数组按个位值排序(Java) | 机试题+算法思路+考点+代码解析 【2023】
- Python(1) 整型与浮动型
- 练习2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀0x 或0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f以及A~F。
- mybatis insert update delete返回都是整型 0,1,增,删,改要提交事物