int类型以及指针的类型所占字节的大小,到底是由什么决定的?

int类型的大小仅仅是由 机器 的字长决定的,还是与机器的字长以及编译器都有关?  
  sizeof(int)=??  
   
  指针的类型是由什么决定的呢?  
  sizeof(Type   *)=??  
   
   
  我提出这个 问题 的缘由是:  
  林锐的高质量C++/C编程指南中有这样的题目:  
  二、以下为Windows   NT下的32位C++ 程序 ,请计算sizeof的值(10分)  
  char       *p   =   str   ;  
  int           n   =   10;  
  请计算                  
  sizeof   (   p   )   =       4       (2分)  
                       
  sizeof   (   n   )   =       4       (2分)   
  

 #include   <string.h>    
  #include   <stdio.h>    
  #include   <ctype.h>    
  #include   <stdlib.h>  
   
  int   main(void)    
  {    
        int   i;  
        char   *string;  
        printf("i   %d/n",sizeof(i));  
        printf("int   %d/n",sizeof(int));  
        printf("char   %d/n",sizeof(char));  
        printf("string   %d/n",sizeof(string));  
        system("pause");    
        i=10;  
        string="hahaha";  
        printf("i=10   %d/n",sizeof(i));  
        printf("string=hahaha   %d/n",sizeof(string));  
        system("pause");    
        return   0;    
  }    
   
   
  i   4  
  int   4  
  char   1  
  string   4  
  请按任意键继续.   .   .  
  i=10   4  
  string=hahaha   4  
  请按任意键继续.   .   .  

一般情况下,微机上的   C/C++   编译器都是以机器字的长度作为整型和指针的长度的,很少有例外,这样你满意了吗?  
   
  在一些大型机上,可能会有所不同。

 

 (1)int类型的长度??  
  ……准确的字节数依赖于机器和编译器……  
  现阶段32bit(即4字节)PC一般在绝大多数编译器下是32bit,当然也有的编译器是16bit(比如turbo   C)。最关键一点,只能小,不能大,这是因为即使编译器把它当作大于32bit了,但因为CPU字长只有32bit,所以也只能处理32bit的数。  
  同时需要注意的就是   在c标准中只是对不同的数据类型的数字范围设置了下界,但是没有上界。  
   
  (2)指针的类型是由什么决定的呢?  
  sizeof(Type   *)=??  
  ==================  
  指针的大小是由内存寻址空间决定的,即地址总线决定。  
   
  一般32位机寻址空间4G,所以指针占4字节;  
   
  一般8位的 单片机 寻址空间是64k,所以指针占2字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值