关于 long 与 long long

楼主: nevikw39 (牧)   2019-03-21 14:49:25
一直以来我一直以为 long、long long int 与 long long 是同义等价的,因为在 64 位元
系统下,sizeof(long) 及 sizeof(long long) 都是 8 啊!
可是我最近看到 stdlib.h 关于绝对值的函式有三个:abs, labs 及 llabs。如果 long ==
long long,为何要有两个不同的函式?如果不同,那又是不同在哪里?
作者: firejox (Tangent)   2019-03-21 15:06:00
long 与long long 的大小规范都是至少几byte,不是固定几byte标准没规定long == long long
作者: sarafciel (Cattuz)   2019-03-21 15:17:00
在32bit的年代long是4个byte喔 更早还有int是2byte的所以要4byte有号整数的准确写法是signed int32_t
作者: chuegou (chuegou)   2019-03-21 16:24:00
请爱用uint64_t
作者: james732 (好人超)   2019-03-21 19:38:00
https://en.wikipedia.org/wiki/C_data_types 可以看看上面都写at least还粗体 XD
作者: IhateOGC (我讨厌)   2019-03-21 20:14:00
作者: tinlans ( )   2019-03-21 20:26:00
你试试 visual c++
作者: suhorng ( )   2019-03-21 21:07:00
64 位元也有 LP64 跟 ILP 64 两种, 一个 int 32 位一个64 位.
作者: loveme00835 (发箍)   2019-03-21 21:16:00
这就是为什么需要 sizeof() operator, 不然都照你的想像 hard-code 就好啦
作者: lc85301 (pomelocandy)   2019-03-21 22:07:00
写 arduino 就会遇到 int 2bytes 了
作者: eye5002003 (下一夜)   2019-03-21 22:13:00
要是这语言打一开始就都用stdint.h里的东西就好了
作者: loveme00835 (发箍)   2019-03-21 22:17:00
stdint.h 也是要看平台的, 不是每个平台都要支援全部
作者: aelin   2019-03-23 00:44:00
long 至少32bit,long long至少是64bit而int大小和平台有关
作者: uranusjr (←這人是超級笨蛋)   2019-03-23 12:29:00
没办法 C 标准制定的那年代这样订最方便, 大家一起还债现在出来的新语言通常就会直接订死位元数了
作者: F04E (Fujitsu)   2019-03-25 18:41:00
请爱用cstdint

Links booklink

Contact Us: admin [ a t ] ucptt.com