马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
麻烦大佬解答啦:
问题1:下面上部分是我的代码,下半部分是模板代码(下图左边是我的代码,和右边模板代码基本一模一样--截图可能显示不出来),但为什么打印结果不同呢?
问题2:既然d表示有符号十进制数,那为什么早期几次课中%d的表示的是大于0的正整数呢?而在学习有符号无符号数之后则需换成%u。还是说只有当代码中事先声明了有符号无符号,才在后续printf中加以区分,否则不区分直接用%d也可以?
问题3:在【printf("舍罕王应该给予达依尔%11u粒麦子!\n", sum);】这个代码中,为什么提前设置数据宽度为11,我在写代码时虽然知道数字很大,但很多时候也不知道其宽度究竟有多大啊。
#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("舍罕王应该给予达依尔%11u粒麦子!\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%11u公斤麦子!\n", weight);
return 0;
}
#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;
}
。。。。字体的问题,他的代码 printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
u前面是两个 LL 小写的,你给看成了两个11,害。
基础不太牢固哦,建议淘本C语言的书在身边没事儿翻翻最好。
因为你定义的是 unsigned long long 所以,格式符组合就应该为:%llu,你直接记为首字母
再比如,你定义的是long(long int等价)长整型,格式符组合就应该为: %ld ,也是首字母
|