c语言,把int变量地址赋给另一个int变量

这个是怎么回事?为何不能b=printf("%d\n",a);#include<stdio.h>intmain(){chara;intb;scanf("%c",&a);b... 这个是怎么回事?
为何不能b=printf("%d\n",a);
#include<stdio.h>
int main()
{
char a;
int b;
scanf("%c",&a);
b=printf("%d\n",a);//这里结果正常
printf("%d\n",b);//试了好多字符,有的结果是3有的结果是4,这是怎么回事
return 0;
}
展开
 我来答
veket的小号
推荐于2016-01-18 · TA获得超过3371个赞
知道大有可为答主
回答量:3762
采纳率:0%
帮助的人:3998万
展开全部

printf函数的返回值是它打印的字符个数 所以来看看不同的输入 会有什么区别

a的ascii吗是97 d的ascii吗是100【你的a是char型但printf用%d按整形输出 , 在ascii码范围内的整形数值可以用%c输出 ascii吗值对应的字符,char型字符可以用%d输出字符对应的ascii码值你们老师 应该有教过的】

输入a后 printf 输出'9' ,'7', '\n'三个字符 

输入d后 printf 输出'1','0','0','\n',4个字符 

一个情深意9d
2014-08-29 · TA获得超过285个赞
知道答主
回答量:131
采纳率:0%
帮助的人:129万
展开全部
p是指针变量,取p地址的地址赋值给一个变量,用&p,这是对的。
问题在于用来存储这个结果的变量是什么类型的,应该是指向指针的指针,int **q。

int *p, *q
p=new int;
*p = 30;
*q = p; // 直接访问*q是危险的!应该先给q赋值再访问*q,比如 q= new int;

q = &p; // 类型不对,定义 int **q, 才可以 q= &p
希望能解决您的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0239e08
2014-08-29 · TA获得超过129个赞
知道答主
回答量:112
采纳率:40%
帮助的人:43.4万
展开全部

printf返回的是字符数量!就是你的字符数 + 1(\n)

应该说。赋址是这样的:

#include <stdio.h>

int main(int argc,char* argv[])
{
    char a;
    int b;
    scanf("%c",&a);
    b = (int)&a;  //&是取址
    printf("%d\n",b);
    return 0;
}

懂了吗?别忘了加分~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2014-08-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4248万
展开全部
你这个代码里,哪里涉及“int变量的地址”了?
printf函数的返值,是实际输出的字节数,本身就是一个int,用int b接收当然没有问题。
因此你显示b的值,是根据第一个printf语句的实际输出决定的,不会是一个固定的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mzh爱不示手
2014-08-29 · 超过19用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:32.7万
展开全部
printf()函数是输出函数,其返回值为输出的字符数。b=printf("%d\n",a);这种格式是可以的,\n也要算一个字符,理论上结果应该是2。3和4是怎么得到的?printf("%d\n",a)的双引号里是不是有空格呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式