如何将字符串转换为长长
int main() {
char **ptr;
long long val1 = strtoumax("1234567890123456",ptr, 10);
printf("%ull\n",val1);
}
它的印刷品只有 1015724736ll。我怎样才能让它打印 1234567890123456
如何将字符串转换为长长
int main() {
char **ptr;
long long val1 = strtoumax("1234567890123456",ptr, 10);
printf("%ull\n",val1);
}
它的印刷品只有 1015724736ll。我怎样才能让它打印 1234567890123456
使用strtoll, strtoumax 用于转换为 uintmax_t,通常不是 long long。
请注意,您的 printf 格式说明符也是错误的,没有“%ull”之类的东西。"%ull" 将被解释为格式说明符 "%u" 和普通字符串 "ll"。传递 long long 以格式化为 unsigned int("%u") 可能会给您带来不可预知的结果。
你需要使用
printf("%lld\n", val1);
如果你有一个 unsigned long long,你会使用 "%llu"
使用unsigned long long
而不是long long
使用strtoull
而不是strtoumax
利用printf("%llu\n",val1);
有很多问题。
而不是printf("%ull\n",val1);
使用printf("%llu\n",val1);
. 把“ll”放在第一位。
ptr
应该是char *ptr
然后foo(..., &ptr, 10)
。(这可以防止坏事,因为此参数需要指向您拥有的内存。)
long long val1
应该是unsigned long long val1
-您似乎想在其余代码中使用无符号整数
strtoumax
应该是strtoull
- 以匹配您的目的地类型unsigned long long
。