【发布时间】:2013-06-19 12:26:03
【问题描述】:
我是 C/C++ 新手,所以我有几个关于基本类型的问题:
-
我在某处读到运算符 % 不能应用于浮点型或双精度型操作数。 那么如何检查浮点型或双精度型变量的可分性呢?我在下面显示了我的程序错误:
#include <stdio.h> int main() { double n,k,t,i; int j=0; scanf("%f %f",&n,&k); i=0; while(i<n) { scanf("%f",&t); if(t%k==0) /* error:invalid operands to binary % */ j++; i++; } printf("%d",j); return 0; } 如果一个正整数的范围最大为 10^9,我应该使用哪个限定符或如何实现如此大的范围?
【问题讨论】:
-
至于您的第二个问题:根据您的编译器,
long int或long long int将为您提供高达 2^63-1 或大约 2E9 的范围。如果你做到了unsigned long long int,你将一路达到 2^64-1 或 40 亿。 -
@Floris 我们是否使用格式 % llu 表示 unsigned long long int ??
-
我不明白您所说的“我怎样才能实现它”是什么意思。您正在使用上面的
double类型。如果您决定使用整数类型,那么我推荐的类型 (unsigned long long int n, k, t, i;) 可以使用。double类型足够大,可以在不损失精度的情况下包含这些数字 -double在不损失精度的情况下可以容纳的最大整数是 2^53 - 请参阅 stackoverflow.com/questions/1848700/… -
是的,您将使用 %llu 作为格式说明符。
unsigned long long int i; printf("enter a number: "); scanf("%llu", &i); printf("you entered %lld\n", i); -
@floris k thnx alot.. :)
标签: c