两道c++题目

来源:百度知道 编辑:UC知道 时间:2024/09/21 04:02:06

#include<iostream.h>
void main()
{
int i=100,j=10;
if(j=0)i=i*i;
else i=i+j;
cout<<i<<endl;
}

#include<iostream.h>
void main()
{
int i=100,j=10;
i=i+j;
cout<<i<<endl;
}

上面这个程序最后的输出结果为什么不一样呢 ??

如果根据i是全局变量,2个植应该都是100
全局和局部变量具体怎么看的我还是不太搞的清楚。。。谁能仔细说下 万分感谢!!!!!

if(j=0)i=i*i;
括号里面应该是j==0
教你一招 以后碰到条件判断这样写:0==j
这样的话就算你写成0=j 那么立刻就能判断出来 因为编译不会通过

根据你的提问我能猜测到你的程序中有错误。第二个程序应该像这种写法:
#include<iostream.h>
int i=100;//i是全局变量
void main()
{
int i=100,j=10;// i是局部变量
i=i+j;
cout<<i<<endl;//输出局部变量i。
cout<<::i<<endl;//输出全局变量i。
}
至于怎么区分全局和局部,我一向看变量定义的位置,如果定义在函数里面就是局部的,如果定义在主函数外面而且不在其他的函数里面,我都认为是全局的,不知我的回答对你有无帮助,真希望对你有帮助。

错误的原因是 if(j=0); 出现这种错误,如果程序很长的话很难能检查出,所以养成良好的编程风格是有必要的,你以后写类似的语句可以这样写
if(0==j); 常量放在左边,即使少写一半,编译器也会提示出错
分清全局变量和局部变量非常简单,主要看其定义的位置:
1.在函数里面就是局部的
2.定义在函数外部,甚至是main函数之前都可以是全局变量,起始的范围不同,作用范围也不一样,定义越靠前,范围越大。
呵呵

2个植应该都是100 !

第二个怎么可能是100!

#include<iostream.h>
void main()
{
int i=100,j=10;
if(j=0)i=i*i;
else i=i+j;
cout<<i<<endl;
}

你确定你的第一个程序if的条件是j=0;么?
是不是你写错了,应该写成j==0; ?
前面是一个赋值