首页
社区
课程
招聘
[旧帖] [求助]在 64位CPU + 64位系统中, C语言 int 长度是多少字节? 0.00雪花
发表于: 2013-9-3 16:05 4628

[旧帖] [求助]在 64位CPU + 64位系统中, C语言 int 长度是多少字节? 0.00雪花

2013-9-3 16:05
4628
在 64位CPU + 64位系统中, C语言 int 长度是多少字节?


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (21)
雪    币: 480
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是64位吧,我猜的。如果有条件,写个小程序测试下即可。
2013-9-3 16:39
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
32位,long为64位
2013-9-3 16:53
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
printf ("%d", sizeof int);
请楼主把这句代码写到你的main 函数中,输出看看便知。
2013-9-3 21:53
0
雪    币: 959
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
root@bt:~# cat test.c
#include <stdio.h>

int main()
{
    printf("%d\n", sizeof(int));
    return 0;
}
root@bt:~# cc test.c -o test
test.c: In function ‘main’:
test.c:5: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘long unsigned int’
root@bt:~# ./test
4
root@bt:~# uname -a
Linux bt 3.10.5 #1 SMP Sun Aug 11 21:39:14 CST 2013 x86_64 GNU/Linux
root@bt:~# 
2013-9-3 22:10
0
雪    币: 48
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
3楼正解
2013-9-3 22:59
0
雪    币: 3736
活跃值: (3867)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
3楼是正确的,以前我一直以为是64位的。
2013-9-3 23:58
0
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
printf("int = %d\n",sizeof(int));测试一下就知道了。
2013-9-5 13:39
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这个貌似不严谨吧!

long  32bit
long long 64bit.
__int64 64bit
2013-9-5 14:35
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
int
16bit                dos
32bit                windows 32bit,64bit
32bit                linux  32bit,64bit
2013-9-5 14:37
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
当然对于cpu 的寄存器而言(rax,rbx,rxc,rdx...),都可以视为64bit,这个角度就不同了.
2013-9-5 14:38
0
雪    币: 239
活跃值: (190)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
long 是长整型 ,不一定是32位,编个程序测试一下就知道了
2013-9-8 15:43
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
CPU的位数是地址的位数,跟数据类型的位数没关系吧,数据类型的位数是由编译器决定的~~~例如:VC 6.0   int 和lang 都是4个字节
2013-9-8 17:10
0
雪    币: 7
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
int 不变 指针变为8了,但是int 本身就是4,没理由到了64变成8,
2013-9-9 09:55
0
雪    币: 3450
活跃值: (1600)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
32位,64位是指操作系统和软件中,cpu进行寻指的范围吧
int,long只是编译器认识的数据类型,编译成int,在64位系统中,
他是64位寻址来使用的,但int长度是不变的
2013-9-9 14:08
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
64bit...
2013-9-9 22:32
0
雪    币: 367
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
支持一下啊  不错
2013-9-9 22:35
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
大家真热情。
2013-9-12 12:15
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
这个是不是要看编译器?
2013-9-12 13:32
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
win7下的结果,编译用的是VC6

int: 4
long:4
Press any key to continue”

#include <stdio.h>
int main()
{
    printf("int: %d\n", sizeof(int) );
    printf("long:%d\n", sizeof(long) );
    return 0;
}
2013-9-12 19:47
0
雪    币: 81
活跃值: (100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
你编译的程序是x86的话会用 syswow64的模式运行 长度是4
你编译的是x64的话 就会以正统的64位模式运行 长度是8
2013-9-12 19:53
0
雪    币: 55
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
应该是与编译器有关,CPU的64是指内部寄存器的宽度
2013-9-13 12:00
0
游客
登录 | 注册 方可回帖
返回
//