POPPUR爱换

标题: 有没有懂C++的,新手请教一个问题 [打印本页]

作者: vegas    时间: 2013-3-22 16:31
标题: 有没有懂C++的,新手请教一个问题
程序1:
#include<iostream>
using namespace std;
int main()
{
double f,m;
cout<<"输入英寸数值:";
cin>>f;
m=f/3.28;
cout<<f<<"英寸等于"<<m<<"米\n";
return 0;
}
程序2:
#include<iostream>
using namespace std;
int main()
{
double f,m;
cout<<"输入英寸数值:";
cin>>f;
f=m*3.28;
cout<<f<<"英寸等于"<<m<<"米\n";
return 0;
}

为啥程序2输出的结果不对?逻辑关系不是一样的吗?

作者: magicyang87    时间: 2013-3-22 16:34
因为是浮点数
作者: vegas    时间: 2013-3-22 16:37
magicyang87 发表于 2013-3-22 16:34
因为是浮点数

程序2结果完全是错误的啊:

输入英寸数值:3.28
-3.03596e+062英寸等于-9.25596e+061米
Press any key to continue
作者: roshan    时间: 2013-3-22 16:39
f=m*3.28;
所以根本就没有改动过m的值,所以哪里有输出对的m值
作者: extremerock    时间: 2013-3-22 16:42
本帖最后由 extremerock 于 2013-3-22 16:45 编辑

m未初始化就调用,会报错的。
你逻辑再怎么正确,也不能未初始化就调用,赋值就是赋值,你自己那套逻辑是你自己瞎想出来的。

作者: vegas    时间: 2013-3-22 16:43
roshan 发表于 2013-3-22 16:39
f=m*3.28;
所以根本就没有改动过m的值,所以哪里有输出对的m值

f=m*3.28和m=f/3.28这两个不是一样的吗?难道编译器不懂?我晕
作者: vegas    时间: 2013-3-22 16:45
extremerock 发表于 2013-3-22 16:42
m未初始化就调用,会报错的。
你逻辑再怎么正确,也不能未初始化就调用,赋值就是赋值,你自己那套逻辑是你 ...

谢谢指教。。。。
作者: kipoter    时间: 2013-3-22 16:49
本帖最后由 kipoter 于 2013-3-22 16:49 编辑
vegas 发表于 2013-3-22 16:43
f=m*3.28和m=f/3.28这两个不是一样的吗?难道编译器不懂?我晕

程序1:
定义m,f
赋值给f
运算求得m

程序2:
定义m,f
赋值给f(推测,此处应该是赋值给m的)
运算求得f(注意,m已定义,但未赋值,所以会出错。推测此处应该是通过运算求得m的)
作者: vegas    时间: 2013-3-22 16:53
本帖最后由 vegas 于 2013-3-22 16:54 编辑
kipoter 发表于 2013-3-22 16:49
程序1:
定义m,f
赋值给f


C++的学习之路刚开始,路还很长啊。。。各位前辈有什么好的书籍介绍没有?浅显一点的
作者: roshan    时间: 2013-3-22 17:00
vegas 发表于 2013-3-22 16:43
f=m*3.28和m=f/3.28这两个不是一样的吗?难道编译器不懂?我晕[sweatingbullets>

这两句话在c++里面是赋值,把等号右边的值付给左边的变量,并不是让电脑解方程啊。。。感觉你把它当成解方程了。。电脑没那么智能。。
作者: vegas    时间: 2013-3-22 17:07
roshan 发表于 2013-3-22 17:00
这两句话在c++里面是赋值,把等号右边的值付给左边的变量,并不是让电脑解方程啊。。。感觉你把它当成解方 ...

谢谢,理解了。。。。
作者: daniel_k    时间: 2013-3-22 17:42
没啥差的,第二个把M定义之后就可以了
作者: darkpiggy    时间: 2013-3-22 20:51
哈哈,LZ太搞了...以为语言都可以自动化的啊...
作者: itany    时间: 2013-3-23 10:09
vegas 发表于 2013-3-22 16:43
f=m*3.28和m=f/3.28这两个不是一样的吗?难道编译器不懂?我晕[sweatingbullets>

楼主没有见过 i=i+1; 这样的么?
在编程的时候,一般=的意思是←,i=i+1的意思是 i←i+1,算出来i+1之后,把这个值给i
作者: 帮顶了    时间: 2013-3-23 11:09
呵呵。等号有时候也是逻辑运算符的。

作者: roshan    时间: 2013-3-23 14:34
帮顶了 发表于 2013-3-23 11:09
呵呵。等号有时候也是逻辑运算符的。

c++里面两个=号才是逻辑运算,一个是赋值运算
作者: deyu260    时间: 2013-3-24 02:42
gz转型变成论坛了吗
作者: kinno    时间: 2013-3-24 10:28
m未赋值,不能进行运算




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4