关于c++和java在定义变量的区别(附代码)

lz12366007 2009-06-10 07:42:53
原谅我在此 发表c++的一个问题
但也不是和java没关系
由于课程的原因 只能放下java学习c++
但学c++真的觉得很不适应
下面是我的一个疑问

#include "stdio.h"
#include "iostream.h"
void fun();
int i=456;
void main()
{
for(int i=0;i<5;i++)cout<<i<<"\n";
for( ;i<5;i++);cout<<i<<"\n";//这里的i不用再定义????????
cout<<i<<"\n";
f();
cout<<i<<"\n"; //这里引用的i竟然是 上面 int i=0的i
}
void fun() //在java里下面的i应该是 i=456;
{//int i=20;
i++;
cout<<i<<"\n";
}

输出结果:
0
1
2
3
4
5
5
457
5

帮我解释下原因 啊 谢啦
今晚上完自习就结贴子!!!!!!
...全文
98 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz12366007 2009-06-11
  • 打赏
  • 举报
回复
代码没错的!!也许真的是编辑器的事 我用的是vc 谢谢大家的回帖
求解的根号三 2009-06-10
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
void fun();
int i=456;
int main()
{
for(int i=0;i<5;i++)cout<<i<<"\n";/*这个循环输出0~4*/
for(;i<5;i++)cout<<i<<"\n";/*由于上面的i成为5,而与条件i<5不合,所以不输出*/
cout<<i<<"\n";/*这里继续输出5*/
fun();/*引用fun()函数,这里的i使用的是全局变量i=456,输出的是457*/
cout<<i<<"\n";
return 0;
}

void fun()
{
i++;
cout<<i<<"\n";
}
这里有个对于局部变量和全局变量的说法。
在房子里有的东西,何必在自寻烦恼到房子外去找?
求解的根号三 2009-06-10
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
void fun();
int i=456;
int main()
{
for(int i=0;i<5;i++)cout<<i<<"\n";
for(;i<5;i++)cout<<i<<"\n";
cout<<i<<"\n";
fun();
cout<<i<<"\n";
return 0;
}

void fun()
{
i++;
cout<<i<<"\n";
}
我也是刚学两个月的java,再拿起C++也许会有点什么不适应。上面的才完全是C++,如果按照那样就有点不伦不类了。
导师也说过,一心一意才是。。。
hmsuccess 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 lz12366007 的帖子:]
原谅我在此 发表c++的一个问题
但也不是和java没关系
由于课程的原因 只能放下java学习c++
但学c++真的觉得很不适应
下面是我的一个疑问

#include "stdio.h"
#include "iostream.h"
void fun();
int i=456;
void main()
{
for(int i=0;i <5;i++)cout < <i < <"\n";
for( ;i <5;i++);cout < <i < <"\n";//这里的i不用再定义????????
cout < <i < <"\n";
f();
cout < <i < <"\n"; //这…
[/Quote]
要分清楚变量的类型,如,全局变量,局部变量,静态变量(全局和局部),常量,静态常量等的生命周期
cgaolei 2009-06-10
  • 打赏
  • 举报
回复
我就认为你打出的代码是误的,但要得到那样的运行结果,代码整理后应是如下:


#include "stdio.h"
#include "iostream.h"
void fun();
int i=456;
void main()
{
for(int i=0;i <5;i++)
{
cout < <i < <"\n";
for(;i <5;i++)
{
cout < <i < <"\n";
}
cout < <i < <"\n";
f();
cout < <i < <"\n";
}
}

void fun()
{
i++;
cout < <i < <"\n";
}
ZangXT 2009-06-10
  • 打赏
  • 举报
回复
换编译器吧。
明显你使用的编译器是连98标准都不支持的。
for(int i=0;i <5;i++)cout < <i < <"\n";
按照标准,这样定义的i在循环结束后就没有了。

你后面用到的i应该是main方法前面的全局变量i。

main方法的返回类型请用int
yejinson 2009-06-10
  • 打赏
  • 举报
回复
你贴代码贴整齐点好吗? 看得难受, 大概看看好象程序有问题...
cgaolei 2009-06-10
  • 打赏
  • 举报
回复
for(int i=0;i<5;i++) cout << i << "\n" //这里输出一个0

for(;i<5;i++) cout<<i<<"\n"; //这里的i使用的是前一个for loop里的i,i=0并小于5,所以马上增加1,循环打印出1,2,3,4,5.

然后跳出里面一层循环后,i=5,再打一个5,

然后运行fun(),里面i全局的456,打印出457;

最后从fun返回到第一层循环里,i=5,再打出最后一个5 ,跳出。

C++比java要灵活很多,需要加小心多注意。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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