%11u 和unsigned,求助
#include <stdio.h>#include <math.h>
int main()
{
unsigned long long sum = 0;
unsigned long long temp;
unsigned long long weight;
int i;
for (i=0; i < 64; i++)
{
temp = pow(2, i);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
return 0;
}
为什么一定要用unsigned不能去掉?%11u是什么?不能用%d取代吗 本帖最后由 关键是感觉 于 2018-7-22 17:40 编辑
为什么一定要用unsigned不能去掉?
你肯定可以去掉(代码是你在写,只要语法没错误,随便你怎样都行),但是表示范围少了,比如超市找零,你见过收银员倒给你拿钱的?
简单说,超市收银是在做商品单价累计的工作,是在做加法。所以用无符号数表示比较好一点。
只是咱们根据需要定义合适的数据类型,比较好。
%11u是什么?不能用%d取代吗
这个你也可以使用%d,只是答案错误而已。
首先printf是一个函数,printf(字符串,参数....);
参数怎样解析?程序去猜?当然不是,由前面的字符串对应的 格式字符串 解析。你不给对应的 格式字符串 那么答案有时候错误也是应该的。(注意我说的是有时候哦)
printf("%d\n",-1);
printf("%u\n",-1);
比如这两句,第一个printf告诉他-1给我按照 整数有符号解析 第二个printf告诉他-1给我按照 整数无符号解析,就是这样简单的道理。
数据都是二进制,怎样去理解,由你去说明
#include <stdio.h>
int main(void){
//sizoef(f)占用8字节:00 00 00 00 00 00 f0 3f
double f=1.0;
int a,b;
a=0x0;
b=0x3ff00000;
printf("%f\n",f);
printf("%f\n",a,b);
return 0;
}
/*
输出结果:1.0 1.0
vs2010测试
*/
/*这个我就非要把 a 和 b 的值 看成一个浮点数去解析*/
/*
栈建议说明
00
00
00
00
00
00
f0
3f
*/
求助。。 这s1e6那一课的作业 本帖最后由 ba21 于 2018-7-22 14:29 编辑
因为取值范围不一样。
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615
你这应该不是数字11 而是字母ll
%llu llu表示unsigned long long
假设是数字 %11u
那么 11表示占位。u表示无符号型。 ba21 发表于 2018-7-22 13:50
因为取值范围不一样。
long long的最大值:9223372036854775807
long long的最小值:-922337203685477580 ...
明明是long long更大。为何他不行?
%d为何不能取代无符合型? 。 皇天在上 发表于 2018-7-22 15:04
明明是long long更大。为何他不行?
%d为何不能取代无符合型?
你从哪里看出来 9223372036854775807 要比 18446744073709551615大了?
页:
[1]