它是 Xcode 附带安装的 gcc ,我现在需要定义出 64 位的长整型,但使用 long long int 定义出的变量,编译运行后发现,仅为 32 位。
我的编译方式很简单,就是在命令行中输入 gcc - o output.e input.c ,因为文件本身很简单,并不需要链接外部的库。
问题:
最后,附上 gcc - v 的结果: Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 7.3.0 (clang-703.0.31) Target: x86_64-apple-darwin15.5.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
1
yksoft1 2016-05-30 13:21:51 +08:00 1
x86-64 的 64 位指的是指针长度 64 位。
long long 就算在 32 位系统下也应当是 64 位的。 而且 xcode 现在的版本应该不自带 gcc 了吧 |
2
UnisandK 2016-05-30 13:38:33 +08:00 1
gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 7.0.2 (clang-700.1.81) Target: x86_64-apple-darwin14.5.0 Thread model: posix |
3
dexterlei OP @yksoft1 它确实带了 gcc ,我并没有自行安装过 gcc ,完全是安了 xcode 之后,发现附带了它,而且, gcc 的安装位置:--prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 ,也是在 Xcode 之下。
另外,我是通过对定义的数值进行移位操作,发现它似乎只有 32 位,因为超过这个限度,就会报错了。 至于,为什么 long long int 会定义出 32 位的数值,我也很迷茫,我尽己所能地推测,觉得 gcc 也许最可能是出问题的节点 |
4
skydiver 2016-05-30 13:40:35 +08:00 1
|
5
dexterlei OP @UnisandK 看来是我错了,我也试了下,确实也是 8 ,那么,看来是我的移位操作存在问题了,我是用该命令做移位操作的:
unsigned long long int result = 0; result |= 1 << 32; 将 result 的第 32 位赋值为 1 ,但是这样就会报错了。 |
8
UnisandK 2016-05-30 14:04:24 +08:00 2
@dexterlei 你说的错误是
warning: shift count >= width of type [-Wshift-count-overflow] result |= 1 << 32; ^ ~~ 1 warning generated. 这个? 看看这儿 http://stackoverflow.com/questions/4201301/warning-left-shift-count-width-of-type |
9
fcicq 2016-05-30 14:05:52 +08:00 1
(uint64_t) 1<<32
|