加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中将字符串转换为long long

发布时间:2020-12-16 04:53:57 所属栏目:百科 来源:网络整理
导读:我无法通过环礁函数在c中正确设置长long值.这是我的例子: #include stdio.hint main(void) { char s[30] = { "115" }; long long t = atoll(s); printf("Value is: %lldn",t); return 0;} 这打印: 值是:0 这有效: printf("Value is: %lldn",atoll(s));
我无法通过环礁函数在c中正确设置长long值.这是我的例子:
#include <stdio.h>

int main(void) {
    char s[30] = { "115" };
    long long t = atoll(s);

    printf("Value is: %lldn",t);

    return 0;
}

这打印:
值是:0

这有效:

printf("Value is: %lldn",atoll(s));

这里发生了什么?

解决方法

首先,让我们回答你的问题:
#include <stdio.h>
#include <stdlib.h>  // THIS IS WHAT YOU ARE MISSING


int main(void) {
    char s[30] = { "115" };
    long long t = atoll(s);

    printf("Value is: %lldn",t);

    return 0;
}

那么,让我们讨论并回答’为什么?’:

为了兼容非常老的C程序(在C89之前),使用一个没有先声明它的函数只会从GCC生成一个警告,而不是一个错误(正如这里的第一个注释所指出的那样,C89中也允许隐式函数声明,因此产生错误是不合适的,这是为什么只产生警告的另一个原因).但是假定这样一个函数的返回类型是int(不是stdlib.h中为atoll指定的类型),这就是程序意外执行但不会产生错误的原因.如果用-Wall编译,你会看到:

Warning: Implicit declaration of function atoll

当他们使用atof而不包括stdlib.h时,这个事实大多震撼了人们,在这种情况下,不会返回预期的double值.

注意:(作为问题评论之一的答案)这就是为什么如果不包括正确的标题可能会截断环礁的结果的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读