scanf语句用错了吗?

paul卢 2015-08-10 09:05:06
想写一个计算a+=a-=a*a的程序,如下:
#include<stdio.h>
main()
{
double a; /*定义双精度a*/
scanf("%lf",a); /*输入数字*/
a+=a-=a*a; /*计算a的值*/
printf("%lf\n",a); /*输出a的值*/
return 0;
}
为什么会出现

如果直接赋值给a就没问题
#include<stdio.h>
main()
{
double a=3; /*3赋值给双精度a*/
a+=a-=a*a; /*计算a的值*/
printf("%lf\n",a); /*输出a的值*/
return 0;
}
答案是-12
...全文
115 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-08-10
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
paul卢 2015-08-10
  • 打赏
  • 举报
回复
引用 4 楼 qq_27010031 的回复:
记住用scanf语句时,要加&符号,它其实是将keyboard的键入值写到address中的cell里。但是一般字符型的数据不要加地址引用符,详情推荐《The C Programming language》,其实英文版的也很简单,有想往高层或是学术方向走的话,大力推荐计算机外文经典书籍,可以上豆瓣或者是知乎查找。
英文不好学习C语言,一开始就看英文书好吗?先看中文版会了再看英文怎么样?
paul卢 2015-08-10
  • 打赏
  • 举报
回复
[quote=引用 4 楼 qq_27010031 的回复:] 英文不好学C语言一开始就看英文的好吗?先看中文再看英文的不好吗?
CHwhoami 2015-08-10
  • 打赏
  • 举报
回复
少一个取地址运算符&
qq_27010031 2015-08-10
  • 打赏
  • 举报
回复
记住用scanf语句时,要加&符号,它其实是将keyboard的键入值写到address中的cell里。但是一般字符型的数据不要加地址引用符,详情推荐《The C Programming language》,其实英文版的也很简单,有想往高层或是学术方向走的话,大力推荐计算机外文经典书籍,可以上豆瓣或者是知乎查找。
kuangbao9 2015-08-10
  • 打赏
  • 举报
回复
同意楼上,&a
paul卢 2015-08-10
  • 打赏
  • 举报
回复
捂脸,这个错误我会记一辈子的,谢谢
飞翔的薄荷 2015-08-10
  • 打赏
  • 举报
回复
应该是&a 吧

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧