sle 7 为何long long int与unsigned long long int以及unsigned int打印结果相同
下面三个代码中,最上方第一个是我的代码,long long int result,第二个代码中result的数据类型则定义为unsigned long long int,
第三个代码中result的数据类型则定义为unsigned int,
那么问题是:为何这在这三种不同的数据类型前提下,最终result的计算结果是一样的?
(而最开始我写int result则溢出了,甲鱼老师视频课程中也简单模仿了一下这个小错误)#include <stdio.h>
#include <math.h>
int main()
{
long long int result;
result=pow(2,32)-1;
printf("result=%llu\n", result);
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
unsigned long long int result;
result=pow(2,32)-1;
printf("result=%llu\n", result);
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
unsigned int result;
result=pow(2,32)-1;
printf("result=%llu\n", result);
return 0;
} 因为那个三个不溢出所以才会结果相同,在不溢出的范围内,就像计算1+1=2,一样
大马强 发表于 2021-8-13 20:46
因为那个三个不溢出所以才会结果相同,在不溢出的范围内,就像计算1+1=2,一样
言简意赅{:10_285:}
但还有一个问题,long long int是有符号数,不应该是负数吗?怎么和unsigned long long int、unsigned int这两个无符号数输出一样结果呢 https://static01.imgkr.com/temp/1fd148cb899c44339061eaaae50d2e80.png 大马强 发表于 2021-8-14 07:03
咳咳 恍然大悟{:10_266:} 问题解决的话,设置下最佳答案{:10_281:}
页:
[1]