C语言中 printf语法printf("%d %d %c\n",a,b,c);和printf("%d %d %c\n",&a,&b,&c);什么区别?一定采纳

 我来答
金色潜鸟
2013-08-09 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5707万
展开全部
简单说,前者是变量的值,后者是变量的地址。

这还同变量声明有关。输出格式要与它们匹配。
例如:
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
girlyaphets
推荐于2018-03-10
知道答主
回答量:21
采纳率:0%
帮助的人:12.4万
展开全部
前面是输出a b c的值 ,如果定义a b c都为int型,这样输出的就是a b c的值,而后者是输出a b c的地址 一般是不会用后者的 后者的使用一般在scanf函数中,比如要输入a 整形的数值 scanf("%d",&a);这个时候一定是&a 表示a的地址。望采纳。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunchy12345678
2013-08-09 · TA获得超过665个赞
知道小有建树答主
回答量:443
采纳率:100%
帮助的人:345万
展开全部

前一句输出abc的值,后一句是未定义行为。

看到说输出地址的我都笑疯了,%d输出地址可以理解为你输入输出都没好好学,%c输出地址我一口水喷到了屏幕上。


好了回归正题。&a,&b,&c的类型都是T*,要输出其地址应该使用%p输出。例如:

printf("%p %p %p\n",&a,&b,&c);

%d和%c都期待一个int型的参数,如果指针在你的平台上和int大小不同就会喜闻乐见的得不到正常的结果。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oak_shield
2013-08-09 · TA获得超过201个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:188万
展开全部
前一句是打印a,b,c的值,后一句是打印a,b,c的地址
&为取地址操作
你知道这些变量都存在内存中的某个地址,这个地址里面有一个数据,这个数据就是这个变量的值
变量的值和变量的地址,这是两个概念
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0ee9ace0b
2013-08-09 · TA获得超过287个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:184万
展开全部

一般是都是这样写的:

printf("%d %d %c\n",a,b,c);

在printf中一变量前面是一般是不会加“&”的,&是取地址符,是取得该变量的地址,一般用在scanf函数中:

scanf("%d",&a) ;
printf("%d",a) ;

 如果用在printf中则为输出变量的地址。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式