POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 2231|回复: 17
打印 上一主题 下一主题

有没有懂C++的,新手请教一个问题

[复制链接]
跳转到指定楼层
1#
发表于 2013-3-22 16:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序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输出的结果不对?逻辑关系不是一样的吗?
2#
发表于 2013-3-22 16:34 | 只看该作者
因为是浮点数
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

4#
发表于 2013-3-22 16:39 | 只看该作者
f=m*3.28;
所以根本就没有改动过m的值,所以哪里有输出对的m值
回复 支持 反对

使用道具 举报

5#
发表于 2013-3-22 16:42 | 只看该作者
本帖最后由 extremerock 于 2013-3-22 16:45 编辑

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

使用道具 举报

6#
 楼主| 发表于 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这两个不是一样的吗?难道编译器不懂?我晕
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2013-3-22 16:45 | 只看该作者
extremerock 发表于 2013-3-22 16:42
m未初始化就调用,会报错的。
你逻辑再怎么正确,也不能未初始化就调用,赋值就是赋值,你自己那套逻辑是你 ...

谢谢指教。。。。
回复 支持 反对

使用道具 举报

8#
发表于 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的)
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2013-3-22 16:53 | 只看该作者
本帖最后由 vegas 于 2013-3-22 16:54 编辑
kipoter 发表于 2013-3-22 16:49
程序1:
定义m,f
赋值给f


C++的学习之路刚开始,路还很长啊。。。各位前辈有什么好的书籍介绍没有?浅显一点的
回复 支持 反对

使用道具 举报

10#
发表于 2013-3-22 17:00 | 只看该作者
vegas 发表于 2013-3-22 16:43
f=m*3.28和m=f/3.28这两个不是一样的吗?难道编译器不懂?我晕[sweatingbullets>

这两句话在c++里面是赋值,把等号右边的值付给左边的变量,并不是让电脑解方程啊。。。感觉你把它当成解方程了。。电脑没那么智能。。
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2013-3-22 17:07 | 只看该作者
roshan 发表于 2013-3-22 17:00
这两句话在c++里面是赋值,把等号右边的值付给左边的变量,并不是让电脑解方程啊。。。感觉你把它当成解方 ...

谢谢,理解了。。。。
回复 支持 反对

使用道具 举报

12#
发表于 2013-3-22 17:42 | 只看该作者
没啥差的,第二个把M定义之后就可以了
回复 支持 反对

使用道具 举报

13#
发表于 2013-3-22 20:51 | 只看该作者
哈哈,LZ太搞了...以为语言都可以自动化的啊...
回复 支持 反对

使用道具 举报

14#
发表于 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
回复 支持 反对

使用道具 举报

15#
发表于 2013-3-23 11:09 | 只看该作者
呵呵。等号有时候也是逻辑运算符的。
回复 支持 反对

使用道具 举报

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

c++里面两个=号才是逻辑运算,一个是赋值运算
回复 支持 反对

使用道具 举报

17#
发表于 2013-3-24 02:42 | 只看该作者
gz转型变成论坛了吗
回复 支持 反对

使用道具 举报

18#
发表于 2013-3-24 10:28 来自手机 | 只看该作者
m未赋值,不能进行运算
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-2-11 02:57

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表