C语言中 printf语法printf("%d %d %c\n",a,b,c);和printf("%d %d %c\n",&a,&b,&c);什么区别?一定采纳
5个回答
展开全部
简单说,前者是变量的值,后者是变量的地址。
这还同变量声明有关。输出格式要与它们匹配。
例如:
char a,b,c;
a='x';b='y';c='z';
printf("%d %d %c\n",a,b,c); // a,b 用 十进制输出 'x' 'y' 的 ASCII 编码值,c 输出 'z' 的字符 z.
输出:120 121 z
printf("%d %d %c\n",&a,&b,&c); // 带&的 是 算出 它们的地址 &a,&b,&c 分别是 a,b,c 的地址。
对应的输出格式 ,前两个%d 还可以,按十进制 输出,后 一个 %c 就与&c不匹配了。
输出地址,一般用 16 进制,%p 格式:
printf("%p %p %p\n",&a,&b,&c);
例如输出: 0012FF7C 0012FF78 0012FF74
这还同变量声明有关。输出格式要与它们匹配。
例如:
char a,b,c;
a='x';b='y';c='z';
printf("%d %d %c\n",a,b,c); // a,b 用 十进制输出 'x' 'y' 的 ASCII 编码值,c 输出 'z' 的字符 z.
输出:120 121 z
printf("%d %d %c\n",&a,&b,&c); // 带&的 是 算出 它们的地址 &a,&b,&c 分别是 a,b,c 的地址。
对应的输出格式 ,前两个%d 还可以,按十进制 输出,后 一个 %c 就与&c不匹配了。
输出地址,一般用 16 进制,%p 格式:
printf("%p %p %p\n",&a,&b,&c);
例如输出: 0012FF7C 0012FF78 0012FF74
展开全部
前面是输出a b c的值 ,如果定义a b c都为int型,这样输出的就是a b c的值,而后者是输出a b c的地址 一般是不会用后者的 后者的使用一般在scanf函数中,比如要输入a 整形的数值 scanf("%d",&a);这个时候一定是&a 表示a的地址。望采纳。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前一句输出abc的值,后一句是未定义行为。
看到说输出地址的我都笑疯了,%d输出地址可以理解为你输入输出都没好好学,%c输出地址我一口水喷到了屏幕上。
好了回归正题。&a,&b,&c的类型都是T*,要输出其地址应该使用%p输出。例如:
printf("%p %p %p\n",&a,&b,&c);
%d和%c都期待一个int型的参数,如果指针在你的平台上和int大小不同就会喜闻乐见的得不到正常的结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前一句是打印a,b,c的值,后一句是打印a,b,c的地址
&为取地址操作
你知道这些变量都存在内存中的某个地址,这个地址里面有一个数据,这个数据就是这个变量的值
变量的值和变量的地址,这是两个概念
&为取地址操作
你知道这些变量都存在内存中的某个地址,这个地址里面有一个数据,这个数据就是这个变量的值
变量的值和变量的地址,这是两个概念
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是都是这样写的:
printf("%d %d %c\n",a,b,c);
在printf中一变量前面是一般是不会加“&”的,&是取地址符,是取得该变量的地址,一般用在scanf函数中:
scanf("%d",&a) ;
printf("%d",a) ;
如果用在printf中则为输出变量的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询