美文网首页
使用atoll()函数需要注意的地方

使用atoll()函数需要注意的地方

作者: delims | 来源:发表于2018-05-24 15:22 被阅读0次

有这样一个测试程序:

#include

#include

int main(void)

{

char *str =  "4000000000";

        int64_t a = 0;

a = atoll(str);

printf("a = %lld/n", a);

printf("a = %llu/n", a);

}

结果会是怎样?

结果是这样:

a = -294967296

a = 18446744073414584320

如果代码修改为:

#include

#include

#include  //Only she can resolve this problem

int main(void)

{

char *str =  "4000000000";

        int64_t a = 0;

a = atoll(str);

printf("a = %lld/n", a);

printf("a = %llu/n", a);

}

结果正确了:

a = 4000000000

a = 4000000000

是不是很神奇?

经过对两段代码汇编跟踪,发现出错的代码比输出正确的代码多了一个sar的命令

sarl $0x1f %edx

这条指令是将64位数的高32为向右移动31位。因为40亿这个数高位是1,所以整个高32会被1填满。

看来是用atoll函数还是要慎重,注意引用头文件。不然错了都不知道怎么回事。

相关文章

  • 使用atoll()函数需要注意的地方

    有这样一个测试程序: #include #include int main(void) { char *str =...

  • 前端面试4

    1.箭头函数使用需要注意的地方this、new、arguments this对象的指向是可变的,但在箭头函数中是固...

  • ES6高频面试题

    一、箭头函数需要注意的地方 当要求动态上下文的时候,就不能够使用箭头函数,也就是this的固定化1、在使用 => ...

  • es6知识整理

    1.箭头函数需要注意的地方 *当要求动态上下文的时候,就不能够使用箭头函数,也就是this的固定化。 (1)在使用...

  • swift基础语法(函数)

    一、函数的基本使用 二、函数的使用注意 --- 参数名 三、函数的使用注意 --- 函数类型 四、函数嵌套

  • 使用count注意事项

    在使用count函数需要注意的地方: 1.count(1)与count(*)得到的结果一致,包含null值。 2....

  • 事件处理

    React元素绑定事件有两点需要注意: 使用箭头函数 使用组件方法

  • ECMAScript 6 箭头函数

    箭头函数 ES6 允许使用“箭头”(=>)定义函数。 使用注意点 箭头函数有几个使用注意点。 (1)函数体内的th...

  • redis 使用需要注意的地方

    1 关于配置文件配置 AOF重写时会消耗大量硬盘IO,可以开启配置no-appendfsync-on-rewrit...

  • WKWebView使用需要注意的地方

    建议大家多看看html、js相关的知识,便于理解WKWebView的那些代理方法用到的场景。 WKWebView有...

网友评论

      本文标题:使用atoll()函数需要注意的地方

      本文链接:https://www.haomeiwen.com/subject/lbdtoxtx.html