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

如题所述

简单说,前者是变量的值,后者是变量的地址。

这还同变量声明有关。输出格式要与它们匹配。
例如:
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
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-10
前面是输出a b c的值 ,如果定义a b c都为int型,这样输出的就是a b c的值,而后者是输出a b c的地址 一般是不会用后者的 后者的使用一般在scanf函数中,比如要输入a 整形的数值 scanf("%d",&a);这个时候一定是&a 表示a的地址。望采纳。本回答被提问者和网友采纳
第2个回答  2013-08-09

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

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


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

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

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

第3个回答  2013-08-09
前一句是打印a,b,c的值,后一句是打印a,b,c的地址
&为取地址操作
你知道这些变量都存在内存中的某个地址,这个地址里面有一个数据,这个数据就是这个变量的值
变量的值和变量的地址,这是两个概念
第4个回答  2013-08-09

一般是都是这样写的:

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

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

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

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

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网