#include <stdio.h> int main(void) { int a = 5; printf("size = %d\n", sizeof(a)); return 0; }

再gcc中出这样的警告,到底是怎么回事?
root@ubuntu:/sys_program# gcc 3.c
3.c: 在函数‘main’中:
3.c:6:5: 警告: 格式 ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat]
那题目太乱,没弄好

还有,我是再ubuntu11.10下编译的,再redhat5.4下就没有报警,为什么呢

#include <stdio.h>
int main(void)
{ int a = 5;
printf("size = %d\n", sizeof(a));
return 0;
}

还有这个,为什么是8不是4呢,再linux下指针不都是占4个字节的空间么
1 #include <stdio.h>
2
3 struct llist{
4 struct llist *next;
5 };
6 int main(void)
7 {
8 struct llist test = {NULL};
9 int a = 5;
10 printf("size = %ld\n", sizeof(test));
11 return 0;
12 }
13

我知道问题所在了,谢谢下面的两位,我无意间装了一个64位的系统,64位的指针变量都是8个字节的,无论哪种指针

第1个回答  2011-11-15
你把%d改为%ld或%lu试试,这个是sizeof(a)是个无符号长整型数值。
第2个回答  2011-11-15
sizeof返回类型是 long unsigned int
%d修改成 %lu试试。本回答被提问者采纳
第3个回答  2011-11-16
main()
main() 函数没有参数就空括号就行了,怎么要加一个void呢,他就是空的意思,我想它肯定报错的
至于指针,当然是4字节,可test 是结构体呀,只是结构体中多了一个指针

#include <stdio.h> int main(void) { int a = 5; printf("size = %...
你把%d改为%ld或%lu试试,这个是sizeof(a)是个无符号长整型数值。

C语言数组每个单位所占字节的问题
是的,char类型与byte类型相同都是占一个字节。如果是unsigned int数组的话,那么数组中的一个单元就占4个字节。

#include "stdio.h" void main() { printf("%d\\n",sizeof(int)); g...
printf("%d\\n",sizeof(int));\/\/ sizeof函数是测出int占用字节多少?int 占用4个字节 所以,输出4 getchar();\/\/这个getchar()是从键盘获取一个字符,这里起到暂停的作用!

c语言任意输入5个数,并按从大到小顺序输出
include <stdio.h> include <stdlib.h> int main(){ int a[5];int i,j,k;for(i=0;i<=4;i++){ scanf("%d",&a[i]);} for(i=0;i<=4;i++){ for(j=0;j<=4;j++){ if(a[i]>a[j]){ k=a[i]; a[i]=a[j]; a[j]=k;} } } printf("排序结果是:\\n");fo...

(1)定义一个整型指针变量p,使它指向一个5个元素的一维数组. (2)使 ...
源代码如下:include<stdio.h> include<stdlib.h> int main(){ int a[5];int *p=a; \/\/定义一个整型指针变量p,使它指向一个5个元素的一维数组.int i;printf("Please input:");for(i=0;i<5;i++)scanf("%d",p+i); \/\/使用指针移动的方式,输入5个整型数组元素.int *q=(int*...

...#include<stdio.h> void main() { int a= sizeof(int *) printf...
include<stdio.h> void main(){int a= sizeof((int *)printf("%d",a)); } 这时候sizeof返回的是{将printf函数的返回值强制转化为(int *)型后}的字节数。另外,在WINDOWS,32位操作系统,内存2G的情况下,所有指针型变量都是4字节的。

c语言中指针怎么使用?
include<stdio.h> include <stdlib.h> int main(int argc, char const *argv[]){ int a[5]={0,1,2,3,4};int *b,*d;int c=2;int *e=a; \/\/e指向a数组首地址 \/\/*b=2; 无法直接初始化 \/\/printf("%d\\n", *b);e=e+2; \/\/移动两个地址单元 d=&c; \/\/d指向c的...

编写程序,利用运算符sizeof测试?
include <stdio.h> int main(){ printf("%d %d\\n",sizeof(char),8*sizeof(char));printf("%d %d\\n",sizeof(int),8*sizeof(int));printf("%d %d\\n",sizeof(long),8*sizeof(long));printf("%d %d\\n",sizeof(float),8*sizeof(float));printf("%d %d\\n",sizeof(double),8*...

C语言中 printf("%d\\n",sizeof(void)); 输出结果为1 为什么
sizeof是取字节运算符,void是空类型,sizeof(void)运算的结果是void类型的变量所占的内存单元(即字节数)数,我认为应该是0,你的输出结果是1,可能你的版本和我的不一样,使用的编译器不一样吧 你可以试试sizeof(int),int 类型的变量占4个内存单元(4个字节),所以结果为4 或sizeof(...

输出各种数据类型的字节长度.用c语言写
include<stdio.h> void main(){ printf("sizeof(char) = %d\\n", sizeof(char));printf("sizeof(shortint) = %d\\n", sizeof(shortint));printf("sizeof(int) = %d\\n", sizeof(int));printf("sizeof(longint) = %d\\n", sizeof(longint));printf("sizeof(longlong...

相似回答