c语言中数字问题

假定int类型变量占用4个字节,有定义:int a[10]={1,2,3,4,5};,则数组a在内存中所占字节数是( )。
A. 5
B. 6
C. 20
D. 40
答案是D。我上网上查,有的说是两个字节,有的说是四个字节,到底几个啊??谢谢~

答案D正确,但在部分书上,结果是C也没问题。这里涉及的就是int几个字节的问题。
假设int为4字节,那么int a[10]就是4*10=40.
而int到底是几个字节?在16位编译系统下(如TC),int为16位,占16个bit,2个Byte,即2字节,范围-32768~32767;
在32位编译系统下,int为4字节,取值范围2^32,即4G大小的范围。

当前流行的编译器中,int都是32位的,只有比较老的C语言书籍中,采用了16位,因此你可以在网上看到2字节int的说法。追问

额,谢谢还有一个问题帮忙看一下:有定义语句:“inta;char b[10],c;”,则错误的输入语句是( )。
A.scanf("%d%s%s",&a,b,&C);
B.scanf("%d%s%d",&a;b,&C);
C.scanf("%d%s%c",&a,&b,C);
D.scanf("%d%s%c",&a,b,&C);
为甚么B是对的??我没有见过啊~~谢谢~

追答

%d 输入int类型整数,需要地址符

%s 输入字符串类型,需要指针或者char数组,因此不加地址符。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-01
题目已经假定一个整数占4个字节了,当然选D啊追问

额,不好意思,我又马虎了~~
还有一个问题,麻烦您给看一下:有定义语句:“inta;char b[10],c;”,则错误的输入语句是( )。
A.scanf("%d%s%s",&a,b,&C);
B.scanf("%d%s%d",&a;b,&C);
C.scanf("%d%s%c",&a,&b,C);
D.scanf("%d%s%c",&a,b,&C);
为甚么B是对的??我没有见过啊~~谢谢~

追答

这里选b,你自己没写过c的代码吧?字符串输入的时候不用加&,整型和字符型都要加&的

追问

嗯,我是刚学c,可是你是怎么判断b是字符型还是字符串呢?不是只有赋值的时候才能判断吗?

追答

已经给你发私信了,请查收

第2个回答  2014-07-01
选 D ;
类型*数组长度
比如:int a[10] sizeof(a)=4*10
第3个回答  2014-07-01
整形数组求大小:sizeof(数组名)。

sizeof(a) 为 20
相似回答