unsigned long long 输出用什么 lld吗
时间: 2023-09-22 12:07:52 浏览: 53
不是的,`unsigned long long` 用于存储无符号长整型数据,应该使用 `%llu` 进行输出。例如:
```c++
#include <cstdio>
int main() {
unsigned long long num = 1234567890123456789ull;
printf("num: %llu\n", num);
return 0;
}
```
输出结果为:
```
num: 1234567890123456789
```
需要注意的是,如果使用 `%lld` 进行输出,会导致输出结果错误。因为 `%lld` 是用于有符号长整型数据的输出格式,如果对无符号长整型数据使用 `%lld`,则会导致结果不正确。
相关问题
c++ 格式化输出 llu lld ld lu
格式化输出表示为将数据按照一定的格式输出到屏幕或文件中。
- %llu:表示输出一个unsigned long long类型的无符号整数。
- %lld:表示输出一个long long类型的有符号整数。
- %ld:表示输出一个long类型的有符号整数。
- %lu:表示输出一个unsigned long类型的无符号整数。
例如:
```c
#include <stdio.h>
int main() {
unsigned long long ull_num = 18446744073709551615ull;
long long ll_num = -9223372036854775807ll - 1;
long l_num = -2147483648l;
unsigned long ul_num = 4294967295ul;
printf("%llu\n", ull_num);
printf("%lld\n", ll_num);
printf("%ld\n", l_num);
printf("%lu\n", ul_num);
return 0;
}
```
输出:
```
18446744073709551615
-9223372036854775808
-2147483648
4294967295
```
#include<stdio.h> const unsigned long long MOD=1844674407370955161; unsigned long long a[2][2]={{1,1},{1,0}}; unsigned long long b[2][2]={{1,1},{1,0}}; unsigned long long c[2][2]={{1,0},{0,1}}; unsigned long long FB (unsigned long long c[2][2],unsigned long long a[2][2]){ unsigned long long temp[2][2]={0}; for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ temp[i][j]=0; for(int k=0;k<2;k++){ temp[i][j]+=c[i][k]*a[k][j]; } } } for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ c[i][j]=temp[i][j]; } } return 0; } unsigned long long account(unsigned long long n){ if(n==1){ FB(a,c); } else{ if(n%2==0){ account(n/2); FB(a,a); } if(n%2==1){ account((n-1)/2); FB(a,a); FB(a,b); } } return 0; } int main(){ unsigned long long n; scanf("%lld",&n); account(n); printf("%lld",a[0][1]%MOD); return 0; }
这是一个斐波那契数列求解的代码,使用了矩阵乘法的方式进行求解,时间复杂度为O(log n)。其中,函数account(n)计算斐波那契数列的第n项,函数FB(c,a)实现了矩阵乘法,最终的结果通过a[0][1]输出。需要注意的是,由于斐波那契数列的值非常大,使用unsigned long long和取模运算避免了计算结果溢出或超出计算机所能表示的范围。