C语言编程,之后出现错误,请大神帮忙看下什么问题?

 int main(void)
{
	int a = 10;
	int *p1 = &a;
	char ch = 'c';
	char *p2 = &ch;
	printf("p1=>size:%d p2=>size:%d\n",
			sizeof(p1), sizeof(p2));
	return 0;
}

Ubuntu编译后的warning

src/pointer_basic.c: In function ‘main’:

src/pointer_basic.c:26:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]

    sizeof(p1), sizeof(p2));

    ^

src/pointer_basic.c:26:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long unsigned int’ [-Wformat=]


慕粉3384799
浏览 3791回答 12
12回答

onemoo

这两个提示并非错误,而是警告。 代码应该仍可编译通过的。printf中 %d 指示后面参数应为int类型,而sizeof的结果是long unsigned int类型。所以,你可以把 %d 改为 %lu,来匹配sizeof类型,这样代码更严谨。

jfhdibrbfjd

你就是没有头文件才导致出错的   ,  电脑的不同决定seziof()的大小   。如果你是32位操作的电脑就会显示4  如果你的电脑是64位的就会显示8

小萝卜腿

# -*- coding=utf-8 -*- """在我印象中int main(void)不是返回空么"""

慕粉13052355856

你没包含stdio.h应该 另外 应该包含stdlib.h然后写system("pause")不然看不到返回值

leavie

第七行%d改成%lu試試,printf(  "p1=>size: %lu p2=>size: %lu\n", sizeof(p1), sizeof(p2) );

lalm

没有头文件

jfhdibrbfjd

#include<stdio.h>  int main(void) {     int a = 10;     int *p1 = &a;     char ch = 'c';     char *p2 = &ch;     printf("p1=>size:%d p2=>size:%d\n",sizeof(p1), sizeof(p2));     return 0; }

jfhdibrbfjd

你没有头文件怎么运行啊

一世沉香

第七行有错

留得枯荷听雨声lyx

你这是要输出值嘛?为什么用sizeof?
打开App,查看更多内容
随时随地看视频慕课网APP