【发布时间】:2019-11-24 01:21:40
【问题描述】:
我正在尝试使用以下代码获取 long long int 的大小限制:
int main()
{
long long int from, to;
printf("signed long long int: ");
bytes=sizeof(long long int);
bits = 8* bytes;
from = -(1 << (bits-1));
to = (1 << (bits-1)) - 1;
printf(" %d bytes from %lld to %lld\n", bytes, from, to);
}
输出是:
signed long long int: 8 bytes from -2147483648 to 2147483647
我希望它是 -9223372036854775808 到 9223372036854775807。上面的代码有什么问题?
【问题讨论】:
-
该代码无法编译......
-
将计算结果分配给
long long int类型的变量不会导致以long long int执行计算。只有结果会被转换。这类似于double x = 1/2;是0而不是0.5。您应该转换操作数以确保以您想要的精度执行计算。
标签: c